全球访问Phalcon中的某些组件

时间:2013-02-14 16:20:40

标签: php registry global phalcon

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

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

在Zend Framework 1.x中,我使用Zend_Registery来实现此目的。

3 个答案:

答案 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