所以我在Zend框架中启动并希望实现一个站点范围的"用户"会话....我可以从应用程序中的所有模块/控制器轻松访问.
我想,我应该在库中创建一个新的命名空间并扩展控制器,如:
class MYCUSTOMLIB_Controller_Action extends Zend_Controller_Action { protected $_userSession; function preDispatch(Zend_Controller_Request_Abstract $req) { $this->_userSession = new Zend_Session_Namespace('user'); } }
然后我的所有控制器/模块/等都延伸到那个?
或者我应该创建一个插件或什么?您将如何使此插件将用户会话传递给控制器?
或者我是否在引导程序中执行此操作?再次如何传递给控制器?
我也应该使用Zend_Session_Namespace或Zend_Http_Cookie,以及如何加密和xss清理cookie或自动完成?
我也会在bootstrap中初始化:
//Bootstrap.php protected function _initUserSession() { return new Zend_Session_Namespace('user'); }
然后我会使用一个动作助手:
// library/App/Controller/Action/Helper/Session.php class App_Controller_Action_Helper_Session extends Zend_Controller_Action_Helper_Abstract { function direct() { return $this->getFrontController()->getParam('userSession'); } }
您可以在控制器中访问它,如下所示:
function indexAction() { $session = $this->_helper->session; }