我创建了一个像这样的容器:
$frontend = new SessionContainer('frontend', null);
我设置了一个变量:
$frontend->offsetSet('foo',$bar);
我的问题是,当你需要在其他地方访问它时,你真的应该在任何地方使用相同的密钥实例化一个新的SessionContainer并获取var吗?或者,会话数据是否在控制器中可用的另一个变量中传递?
答案 0 :(得分:2)
首选做法是直接访问会话值,就好像它们是实例化容器对象的属性一样。
$frontend = new SessionContainer('frontend');
$bar = $frontend->foo;
会话容器类通过调用:
来完成幕后的其余工作$frontend->__get('foo');
反过来调用:
$frontend->offsetGet('foo');
使用上面的第一个示例有助于提高可读性。同样,您可以使用:
$frontend->foo = 'bar';
在幕后,这叫:
$frontend->__set('foo', 'bar');
......然后:
$frontend->offsetSet('foo', 'bar');