【发布时间】:2013-07-05 20:29:21
【问题描述】:
对 Phalcon(和一般框架)来说是全新的,所以请原谅我的 n00b-ness。
我想在我的引导文件中加载我的配置,然后将其存储在会话中(因此它只需要加载一次,并且可以全局访问)。
我已经创建了我的会话,并且我已成功地将我的配置信息加载到 $Config 中。我如何将 $Config 存储在会话中?由于我不在控制器中,我不能使用$this->session。看来唯一的方法是将会话拉出 DI,添加 $config 属性,然后重新设置 DI 的会话属性:
$DI->setShared('session', function(){
$session = new Phalcon\Session\Adapter\Files();
if(session_status() == PHP_SESSION_NONE)
$session->start();
return $session;
});
$Config = require '../app/config/config.php';
$Session = $DI->get('session');
$Session->config = $Config;
$DI->setShared('session',$Session);
虽然这似乎是一种在引导程序中存储会话中的东西的非常低效的方式。这是唯一的方法还是我错过了一些隐藏的功能?我想我可以手动创建会话(而不是在匿名函数中),设置“配置”,然后将其存储为$DI->setShared()。
【问题讨论】:
-
Config里面是什么,为什么要把它存到session里?它是用户特定的吗?否则每个用户都会有一个相同的副本?你确定你不只是在寻找缓存吗? docs.phalconphp.com/en/latest/reference/cache.html
-
不,它不是特定于用户的,只是特定于应用程序的属性(即:控制器/模型/视图目录所在的位置、数据库凭据、ACL 内容)。我会查看缓存 - 这可能是我想要的。
-
因为如果您将它存储在会话中 - 它将为每个用户复制。这不是优化,而是减慢速度。它是否可以被优化可能是个问题(在内存(apc)中存储和执行轻代码可能比将其结果存储在硬盘上更快)。
标签: php frameworks phalcon