【发布时间】:2012-03-28 06:38:27
【问题描述】:
我正在寻找在 zf 应用程序中使用会话的最佳方式。 起初我做了这样的事情 - 在控制器超类的 init 方法中我初始化了会话:
class Vovkin_Controller_Action extends Zend_Controller_Action
{
protected $_session;
public function init()
{
// here I define namespace
// ...
$this->_session = new Zend_Session_Namespace($nameSpace);
parent::init();
}
...
}
在以这种方式使用控制器中的会话之后:
public function someAction()
{
$this->_session->user = $user;
}
但我发现这种方法对于系统的其他部分不是很方便,比如插件、服务等,因为我必须以其他方式初始化会话,但如果可能的话,我希望将它保存在一个地方。所以我决定把它改成这种方法https://stackoverflow.com/a/2506447。
现在我有一些操作助手来为具有不同命名空间的会话提供访问权限,它的工作原理如下:
public function someAction()
{
$this->_helper->session()->user = $user;
}
到目前为止它看起来很有用,因为我可以通过这种方式访问系统其他部分(例如服务)中的会话命名空间:
class Vovkin_Model_Service_UserLoginService
{
public function login()
{
$session = Zend_Controller_Action_HelperBroker::getStaticHelper('session')->direct();
...
}
....
}
但是从架构和使用资源的角度来看,以这种方式使用它的正确程度有多少?
谢谢。
【问题讨论】:
-
我的意见,就用
Zend_Registry吧。
标签: zend-framework session architecture