向会话添加数据
Adding data to a session
真的很简单。
在 Silex 中,文档说要将数据添加到您使用的会话中:
$app['session']->set('user', array('username' => $username));
这工作正常,但我将大量数据分配给会话,这只会让代码无法读取如此大的数组。所以,在我的应用程序中,我使用:
$app['session']->set('session_name', $array);
两者都有效。但是,我的应用程序是多个页面,我想将数据添加到会话中,而不是覆盖它,这就是我的方法。
我检查了源代码,但在 API 文档中没有看到任何内容(我可能遗漏了它),但是是否有类似 $app['session']->add('session_key', $data)
类似于 [=13] 的内容=]?
或者我最好的选择是提取会话数据,将其添加到新数据然后写入会话?
会话 api 非常简单,没有您需要的功能。
快速修复是检索当前值,添加到它然后再次设置它:
$foo = $app["session"]->get("foo", array());
$foo[] = $newData;
$app["session"]->set("foo", $foo);
如果您准备好深入研究代码,您还可以创建自己的具有此功能的会话处理程序:
class MySessionHandler extends Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler
{
public function addToKey($key, $value)
{
$foo = $this->get($key, array());
$foo[] = $value;
$this->set($key, $foo);
}
}
然后使用 Silex:
$app['session.storage.handler'] = $app->share(function ($app) {
return new MySessionHandler($app['session.storage.save_path']);
});
真的很简单。
在 Silex 中,文档说要将数据添加到您使用的会话中:
$app['session']->set('user', array('username' => $username));
这工作正常,但我将大量数据分配给会话,这只会让代码无法读取如此大的数组。所以,在我的应用程序中,我使用:
$app['session']->set('session_name', $array);
两者都有效。但是,我的应用程序是多个页面,我想将数据添加到会话中,而不是覆盖它,这就是我的方法。
我检查了源代码,但在 API 文档中没有看到任何内容(我可能遗漏了它),但是是否有类似 $app['session']->add('session_key', $data)
类似于 [=13] 的内容=]?
或者我最好的选择是提取会话数据,将其添加到新数据然后写入会话?
会话 api 非常简单,没有您需要的功能。
快速修复是检索当前值,添加到它然后再次设置它:
$foo = $app["session"]->get("foo", array());
$foo[] = $newData;
$app["session"]->set("foo", $foo);
如果您准备好深入研究代码,您还可以创建自己的具有此功能的会话处理程序:
class MySessionHandler extends Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler
{
public function addToKey($key, $value)
{
$foo = $this->get($key, array());
$foo[] = $value;
$this->set($key, $foo);
}
}
然后使用 Silex:
$app['session.storage.handler'] = $app->share(function ($app) {
return new MySessionHandler($app['session.storage.save_path']);
});