如何从所有MVC图层中访问某些类和对象?
例如,我想全局访问当前用户的个人资料和config.ini
文件。
在Zend Framework 1.x中,我使用Zend_Registery来实现此目的。
答案 0 :(得分:3)
您可以使用DI container进行此操作。
访问配置的一种简单方法是在引导程序中创建一个lambda函数,如下所示:
$configFile = require(ROOT_PATH . '/web/config/global.php');
// Create the new object
$config = new \Phalcon\Config($configFile);
// Store it in the Di container
$this->di['config'] = $config;
从控制器访问此对象非常简单:
$config = $this->config;
从您的应用程序的任何其他部分,您始终可以抓取Di容器并从那里访问它,如下所示:
$di = \Phalcon\DI\FactoryDefault::getDefault();
$config = $di->config;
查看一个bootstrap示例here。它展示了如何在Di容器中注册服务。
根据当前用户配置文件,您始终可以使用会话组件来存储该信息,并以与上述配置相同的方式随意检索该信息。
最后,您可以在Phalcon中注册自己的注册表服务。如果您有兴趣,我有一个例子here。
答案 1 :(得分:1)
我为一些phalcon问题构建了扩展骨架。这是其中之一。
在此处查看项目:https://github.com/alanbarber111/cloud-phalcon-skeleton
但是,基本上可以从应用中的任何位置调用Cloud::app()->getPhalconDi()
或Cloud::app()->getPhalconRouter()
或Cloud::app()->getPhalconApplication()
答案 2 :(得分:0)
值得一提的是,Phalcon包含一个内置的注册服务,我发现它很有帮助:
https://docs.phalconphp.com/en/latest/api/Phalcon_Registry.html