任何人都知道如何定义在所有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
文件中,但该怎么做?
非常感谢。
答案 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;
}
现在您可以在项目的每个文件中使用已定义的常量