当前位置:  开发笔记 > 编程语言 > 正文

Zend Framework应用会话资源和Bootstrapping,有什么问题?

如何解决《ZendFramework应用会话资源和Bootstrapping,有什么问题?》经验,为你挑选了2个好方法。

嗨:我使用的是最新版本的Zend Framework(1.9.3PL1).我在.ini中设置了以下内容

; Bootstrap session resources
resources.session.save_path = APPLICATION_PATH "/../data/sessions"
resources.session.use_only_cookies = true
resources.session.remember_me_seconds = 864000

接下来我想在我的引导程序中初始化我的会话:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initSession()
    {
        // What goes here!?
    }
}

我的问题是,initSession函数有什么用处?它应该返回什么,如果有的话?

此外,如果我只是在那里开始会话,它不会识别.ini配置(例如,save_path不变).但是,如果将开头移动到控制器,则会识别.ini配置.

编辑:一个可能的解决方案是:

protected function _initSession()
{
    // Based on http://framework.zend.com/issues/browse/ZF-6651
    $session = $this->getPluginResource('session'); 
    $session->init(); 
    Zend_Session::start();
}

Stefan Gehri.. 11

如果resources.session.*在应用程序配置中使用-options,则必须_initSession()在引导程序中没有方法,因为这些方法将覆盖插件资源session(Zend_Application_Resource_Session)的执行.resources.session.*配置文件中-options 的唯一退出将确保会话将根据您的选项进行初始化.

请阅读Zend_Application,Operation of Operation,详细讨论所谓的资源方法资源插件.



1> Stefan Gehri..:

如果resources.session.*在应用程序配置中使用-options,则必须_initSession()在引导程序中没有方法,因为这些方法将覆盖插件资源session(Zend_Application_Resource_Session)的执行.resources.session.*配置文件中-options 的唯一退出将确保会话将根据您的选项进行初始化.

请阅读Zend_Application,Operation of Operation,详细讨论所谓的资源方法资源插件.



2> simonrjones..:

Stefan非常正确,您将覆盖使用这些应用程序选项的默认会话资源.

如果要定义自己的_initSession()方法并仍然访问这些选项,请使用以下内容:

protected function _initSession() 
{
    $options = $this->getOptions();
    $sessionOptions = array(
        'save_path' => $options['resources']['session']['save_path']
    );    
    Zend_Session::setOptions($options);
    Zend_Session::start();
}

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有