如何使某些类和对象可从所有 MVC 层访问?
例如,我想config.ini
全局访问当前用户的个人资料和文件。
在 Zend Framework 1.x 中,我为此使用 Zend_Registery。
您可以为此使用DI 容器。
访问配置的一种简单方法是在引导程序中创建一个 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;
在这里查看一个引导示例。它展示了服务是如何在 Di 容器中注册的。
根据当前用户配置文件,您始终可以使用 Session 组件以与上述配置相同的方式存储该信息并随意检索它。
最后,您可以在 Phalcon 中注册您自己的 Registry 服务。如果你有兴趣,我这里有一个例子。
我为一些 phalcon 问题构建了一个扩展的骨架。这是其中之一。
在此处查看项目:https ://github.com/alanbarber111/cloud-phalcon-skeleton
但是,基本上Cloud::app()->getPhalconDi()
or Cloud::app()->getPhalconRouter()
orCloud::app()->getPhalconApplication()
可以从应用程序的任何地方调用
值得一提的是,Phalcon 包含一个内置的注册表服务,我发现它很有帮助:
https://docs.phalconphp.com/en/latest/api/Phalcon_Registry.html