0

我像这样创建一个容器:

$frontend = new SessionContainer('frontend', null);

我像这样设置一个变量:

$frontend->offsetSet('foo',$bar);

我的问题是,当您需要在其他地方访问它时,您真的应该在任何地方使用相同的键实例化一个新的 SessionContainer 并获取 var 吗?或者,会话数据是否在控制器中可用的另一个变量中传递?

4

1 回答 1

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');
于 2013-12-03T20:55:39.883 回答