Phalcon:如何定义在所有Controller和Model上可见的常量

时间:2014-05-15 10:00:35

标签: model controller constants visible phalcon

任何人都知道如何定义在所有Controller和应用程序模型中都可见的常量。

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

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;
}

我希望这些常量在我的应用程序的所有Controller和Model上都可见。


让我澄清一下我的问题。

我想只定义这些常量一次,我想在所有Controller,Model和View中访问它们。

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

Configure::write('ENABLE', 1);  

然后在所有CakePHP Controller,Model和View中,我可以用这种方式访问​​这些常量:

Configure::read('ENABLE');  

所以我的问题是:我应该在哪里定义这些变量,这些变量在Phalcon的整个应用程序中是可见的?也许在bootstrap文件中,但该怎么做?

非常感谢。

3 个答案:

答案 0 :(得分:2)

看看:http://docs.phalconphp.com/en/latest/reference/cli.html 我定义了bootstrap常量,我可以随处可见。 这个对我有用。 抱歉我的英语不好!!

自举:

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

控制器:

namespace App\Controllers\xxx;
class IndexController extends ControllerBase
{
  public function indexAction()
  {
     echo VERSION;
  }
}

答案 1 :(得分:0)

您可以使用任何一种方法。恕我直言,更好的方法是在类中使用它们与全局定义的常量。使用其余的OOP代码感觉更自然,您可以在逻辑上将常量分成类和名称空间,大多数IDE会更好地对待它们,因此以后重构/维护代码会更容易。

陈述显而易见的,但是如果你使用带有常量的类,你的问题是如何在任何控制器中使用它们:

namespace My/Name/Space/Controller;

use My/Name/Space/WhichClass;

class AnyClass 
{
    public function __construct() 
    {
        echo WhichClass:: APP_CONST_ACTIVE;
    }
}

答案 2 :(得分:0)

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

代码应与此相同:

class ControllerBase extends Phalcon\Mvc\Controller
{
    protected function initialize()
    {
       define('WORLD_SAVIOR', 313);
    }
}

然后在其他控制器中扩展基数:

class IndexController extends CnotrollerBase
{
  //echo WORLD_SAVIOR;
}

现在您可以在项目的每个文件中使用已定义的常量