Request:请求
包含了请求相关的信息
GET、POST、COOKIE、HEADER、FILES
通过对应的数组获取,其中,头信息所有key均为小写。如:
echo $request->get['id'];
echo $request->header['referer'];
1
2
2
服务器信息
通过server
数组获取,对应于PHP的$_SERVER数组。所有key均为小写。
原始的POST包体
通过rawContent
方法获取。
从URL中解析出的参数(路由)
通过param
数组获取。
若使用了Map解析,且开启了扩展名解析,可通过extension
获取请求扩展名。
文件上传
除了通过files
数组获取外,可以通过file
方法,操作更方便:
$file = $request->file();
foreach ($file as $f) {
// 可以直接读取内容
echo $f->getContent();
// 保存至指定路径
$f->save('/path/to/file');
// 打开文件
$handler = $f->getStream();
echo fread($handler, 1024);
fclose($handler);
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Hook
可以在Request对象中添加自己的属性。如:
Request::hook('user', function($req) {
return $req->get['id'];
});
// 在Controller中
echo $request->user;
1
2
3
4
5
6
2
3
4
5
6
Session
配置
在环境配置中:
; Session最大生命时长,单位:s,默认为720
session.lifetime=720
; Session位于cookie中,或get参数中,默认为cookie
session.type=cookie
; session.type=get
; Cookie或Get参数名称,默认为yesfsessid
session.name=testsessid
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
获得Session
通过Request的session方法获得:
public function MyAction(Request $request, Response $response) {
$session = $request->session();
}
1
2
3
2
3
操作Session
使用数组操作
你可以像操作数组一样,操作Session
public function MyAction(Request $request, Response $response) {
$session = $request->session();
$session['user'] = 'admin';
echo $session['user'];
unset($session['user']);
var_dump(isset($session['user']));
}
1
2
3
4
5
6
7
2
3
4
5
6
7
使用方法操作
方法 | 描述 | 参数 | 返回 | 示例 |
---|---|---|---|---|
id | 获得SessionID | 无 | string | $id = $session->id(); |
set | 赋值 | set(mixed 名称, mixed 值) | 无 | $session->set('name', 'admin'); |
get | 获取 | get(mixed 名称) | mixed | echo $session->get('name'); |
has | 判断是否存在 | has(mixed 名称) | bool | var_dump($session->has('name')); |
delete | 删除 | delete(mixed 名称) | 无 | $session->delete('name'); |
clear | 清空全部 | 无 | 无 | $session->clear(); |
public function MyAction(Request $request, Response $response) {
$session = $request->session();
echo $session->id();
$session->set('user', 'admin');
echo $session->get('user');
$session->delete('user');
var_dump($session->has('user'));
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
自定义SessionHandler
编写类,实现SessionHandlerInterface。其中,open、close、gc均只需一个空方法。主要实现read、write、destroy,如:
public function read($session_id) {
return $this->cache->get('sess_' . $session_id, '');
}
public function write($session_id, $session_data) {
return $this->cache->set('sess_' . $session_id, $session_data, $this->lifetime);
}
public function destroy($session_id) {
return $this->cache->delete('sess_' . $session_id);
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
在Dispatcher上注册:
namespace YesfApp;
use MySessionHandler;
use Yesf\Http\Dispatcher;
class Configuration {
public function setSession(Dispatcher $dispatcher, MySessionHandler $handler) {
$dispatcher->setSessionHandler($handler);
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
← 路由 Response:响应 →