Model Phalcon:如何定义在所有控制器和模型上可见的常数

Model Phalcon:如何定义在所有控制器和模型上可见的常数,model,controller,constants,visible,phalcon,Model,Controller,Constants,Visible,Phalcon,任何人都知道如何定义在所有控制器和应用程序模型上可见的常量 例如,我可以在其中定义这些常量: define('APP_CONST_ACTIVE', 1); define('APP_CONST_INACTIVE', 0); define('APP_CONST_ENABLE', 1); define('APP_CONST_DISABLE', 0); 或者我应该在哪个类中定义这些常量: class WhichClass { const APP_CONST_ACTIVE = 1; co

任何人都知道如何定义在所有控制器和应用程序模型上可见的常量

例如,我可以在其中定义这些常量:

define('APP_CONST_ACTIVE', 1);
define('APP_CONST_INACTIVE', 0);
define('APP_CONST_ENABLE', 1);
define('APP_CONST_DISABLE', 0);
或者我应该在哪个类中定义这些常量:

class WhichClass
{
    const APP_CONST_ACTIVE = 1;
    const APP_CONST_INACTIVE = 0;
    const APP_CONST_ENABLE = 1;
    const APP_CONST_DISABLE = 0;
}
我希望这些常量在我的应用程序的所有控制器和模型上都可见


让我澄清我的问题

我只想定义这些常量一次,我想在所有控制器、模型和视图中访问它们

例如,在CakePHP中,如果在app/Config/core.php中,我定义了以下内容:

Configure::write('ENABLE', 1);  
然后在所有CakePHP控制器、模型和视图中,我可以通过以下方式访问这些常量:

Configure::read('ENABLE');  
所以我的问题是:我应该在哪里定义这些变量,这些变量在整个应用程序中都是可见的?可能在
引导文件中,但如何做到这一点


非常感谢。

您可以使用任何一种方法。IMHO,更好的方法是在类内部使用它们,而不是全局定义的常量。使用OOP代码的其余部分感觉更自然,您可以在逻辑上将常量划分为类和名称空间,大多数IDE会更好地处理它们,因此以后重构/维护代码会更容易

说明显而易见的问题,但是如果您使用带有常量的类,并且您的问题是如何在任何控制器中使用它们:

namespace My/Name/Space/Controller;

use My/Name/Space/WhichClass;

class AnyClass 
{
    public function __construct() 
    {
        echo WhichClass:: APP_CONST_ACTIVE;
    }
}
namespace App\Controllers\xxx;
class IndexController extends ControllerBase
{
  public function indexAction()
  {
     echo VERSION;
  }
}

您可以在控制器目录中创建ControllerBase.php 然后在文件内部使用初始化函数在所有控制器中插入全局使用的任何内容

代码应与此相同:

class ControllerBase extends Phalcon\Mvc\Controller
{
    protected function initialize()
    {
       define('WORLD_SAVIOR', 313);
    }
}
然后在其他控制器中扩展基础:

class IndexController extends CnotrollerBase
{
  //echo WORLD_SAVIOR;
}
现在,您可以在项目中的每个文件中使用定义的常量查看: 我定义了bootstrap常量,我可以在任何地方使用它。 它对我有用。 对不起,我的英语不好

引导:

define('VERSION', '1.0.0');
[...]
application = new \Phalcon\Mvc\Application($di);
echo $application->handle()->getContent();
控制器:

namespace My/Name/Space/Controller;

use My/Name/Space/WhichClass;

class AnyClass 
{
    public function __construct() 
    {
        echo WhichClass:: APP_CONST_ACTIVE;
    }
}
namespace App\Controllers\xxx;
class IndexController extends ControllerBase
{
  public function indexAction()
  {
     echo VERSION;
  }
}

让我澄清我的问题。我只想定义这些常量一次,我想在所有控制器、模型和视图中访问它们。例如,在CakePHP中,如果在app/Config/core.php中,我定义了以下内容:Configure::write('ENABLE.ENABLE',1);Configure::write('ENABLE.DISABLE',0);然后在所有CakePHP控制器、模型和视图中,我可以通过以下方式访问这些常量:Configure::read('ENABLE.ENABLE');所以我的问题是:我应该在哪里定义这些变量,这些变量在整个应用程序中都是可见的?非常感谢。