-
Notifications
You must be signed in to change notification settings - Fork 80
hui_hua
janhuang edited this page May 7, 2016
·
8 revisions
框架中的会话和本身 PHP 会话是基本一致,在原有基础上进行了简单的封装。
下述简单地谁明一下方法名和参数。具体操作应该由 \FastD\Http\Request
对象操作,而对象,应该在控制器方法中进行注入,示例:
/**
* @Route("/session", name="base.session")
*
* @param Request $request
* @return Response
*/
public function sessionAction(Request $request)
{
if (!$request->hasSession('name')) {
$request->setSession('name', 'jan');
}
$name = $request->getSession('name');
if (!$request->hasCookie('age')) {
$request->setCookie('age', 18);
}
$age = $request->getCookie('age');
return $this->render('base/request.twig', [
'name' => $name,
'age' => $age,
]);
}
cookie 操作与 PHP 本身操作保持一致,只是框架中的 cookie 是一个对象,而 PHP 本身的是一个函数操作而已,内部实现也是通过 setcookie
进行处理。因此在效果,及操作上是没有太大区别。
setCookie
\FastD\Http\Request::setCookie($name, $value = null, $expire = 0, $path = '/', $domain = null, $secure = false, $httpOnly = true);
getCookie
\FastD\Http\Request::getCookie($name);
session 操作和原生 PHP 操作也是非常类似的,所以在操作上是很容易熟悉,过往 session 的设置大致应该是 $_SESSION['name'] = name
,这让程序在本身的设计上会造成臃肿和难以维护,所以 session 是有必要分装成一个一致性,统一管理的对象,框架就是做了这么一个简单的封装。
setSession
\FastD\Http\Request::setSession($name, $value);
getSession
\FastD\Http\Request::getSession($name);
具体代码可看演示示例.
框架的 session 本身提供两种存储模式,一是 PHP 默认的存储模式,另外一种则是可以注入 Redis
, Memcache
进行存储的优化,而这里只需要简单地注入存储对象即可。
注意: sessionHandler需要在一开始初始化的时候进行注入,否则不生效,因为 session 在每一个请求中只能初始化一次