ara*_*ara 19 php zend-session zend-framework2
我最近开始使用Zendframework 2构建应用程序,我在ZF1方面有很好的经验,我在ZF2面临的主要问题是会话.
这是我创建会话容器的方式.
use Zend\Session\Container;
Run Code Online (Sandbox Code Playgroud)
//会话容器创建:(以前我们将其称为命名空间)
$session_user = new Container('user');
$session_user_errors = new Container('usererrors');
$session_user_shares = new Container('usershares');
Run Code Online (Sandbox Code Playgroud)
现在像这样我有几个容器,
我可以清除这样一个特定容器的钥匙
//通过键从会话中获取值:(从命名空间获取值)
$email = $session_user->offsetGet('email');
Run Code Online (Sandbox Code Playgroud)
//在会话中设置值:(从命名空间设置值)
$session_user->offsetSet('username', 'abcd');
Run Code Online (Sandbox Code Playgroud)
现在我的问题是清除在我的应用程序的几个级别设置的整个容器.
如果我尝试下面的代码它清除我的所有会话容器.
$session_user = new Container('user');
$session_user->getManager()->getStorage()->clear();
Run Code Online (Sandbox Code Playgroud)
我想只清除一个名为'user'的容器,它有很多键(我不知道最后会有什么).有没有办法实现这一目标
我知道我可以在每个键上做offsetunset但这不是我觉得的最佳解决方案.
如果有任何替代方法可以清除特定的会话容器,请建议.
注意: -我没有使用任何第三方模块,如ZfcUser和Akrabat会话
在此先感谢您回复此帖子.
Cri*_*isp 43
你几乎拥有它,你只需要将命名空间传递给clear方法
$session_user->getManager()->getStorage()->clear('user');
Run Code Online (Sandbox Code Playgroud)
您仍然可以将$ _SESSION视为数组,因此以下内容也适用
unset($_SESSION['user']);
Run Code Online (Sandbox Code Playgroud)