1

如何使某些类和对象可从所有 MVC 层访问?

例如,我想config.ini全局访问当前用户的个人资料和文件。

在 Zend Framework 1.x 中,我为此使用 Zend_Registery。

4

3 回答 3

3

您可以为此使用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 服务。如果你有兴趣,我这里有一个例子。

于 2013-02-14T16:42:51.913 回答
1

我为一些 phalcon 问题构建了一个扩展的骨架。这是其中之一。

在此处查看项目:https ://github.com/alanbarber111/cloud-phalcon-skeleton

但是,基本上Cloud::app()->getPhalconDi()or Cloud::app()->getPhalconRouter()orCloud::app()->getPhalconApplication()可以从应用程序的任何地方调用

于 2014-03-16T03:33:12.837 回答
0

值得一提的是,Phalcon 包含一个内置的注册表服务,我发现它很有帮助:

https://docs.phalconphp.com/en/latest/api/Phalcon_Registry.html

于 2015-06-20T02:54:39.330 回答