1. Request;
- 每次的访问都是一个请求,请求之后返回到浏览器的都是一个响应
- Laravel 中的请求使用的是 symfony/http-foundation 组件
- 请求里存放了
$_GET
、$_POST
、$_COOKIE
、$_FILES
、$_SERVER
等数据
<?php
Route::any('request1', ['uses' => 'StudentController@request1']);
use Illuminate\Http\Request;
public function request1(Request $request){
echo $request->input('name', 'unknown');
$request->has('name');
dd($request->all();
echo $request->method();
$request->isMethod('GET');
$request->ajax();
$request->is('request');
$request->is('student/*');
echo $request->url();
}
2. Session;
- Session 简介
- 由于 HTTP 协议是无状态(stateless)的,所以 session 提供一种保存用户数据的方法
- Laravel 支持了多种 Session 后端驱动,并提供清楚统一的 API。也内置支持如 Memcached、Redis 和数据库的后端驱动。默认使用 file 的 Session 驱动
- Session 的配置文件在
config/session.php
中
- Laravel 中使用 Session 有三种方式
- HTTP request 类的 session() 方法
- session() 辅助函数
- Session fecade
<?php
'driver' => env('SESSION_DRIVER', 'file'),
'lifetime' => env('SESSION_LIFETIME', 120),
'table' => 'sessions',
Route::group(['middleware' => ['web']], function(){
Route::any('session1', ['uses' => 'StudentController@session1']);
Route::any('session2', [
'as' => 'session2',
'uses' => 'StudentController@session2'
]);
});
public function session1(Request $request){
$request->session()->put('key1', 'value1');
echo $request->session()->get('key1');
session()->put('key2', 'value2');
echo session()->get('key2');
Session::put('key3','value3');
echo Session::get('key3');
echo Session::get('key4', 'default4');
Session::put(['key4' => 'value4']);
echo Session::get('key4');
Session::push('student', 'Tom');
Session::push('student', 'Jerry');
$res = Session::get('student');
var_dump($res);
$res = Session::pull('student');
$res = Session::all();
dd($res);
Session::has('key1');
Session::forget('key1');
Session::flush();
Session::flash('key-flash','value-falsh');
echo Session::get('key-flash');
}
3. Response;
<?php
Route::any('response1', ['uses' => 'StudentController@response1']);
public function response1(){
$data = [
'errCode' => 0,
'errMsg' => 'success',
'data' => 'Tom'
];
return response()->json($data);
return redirect('session2')->with('message', 'flash-key');
return redirect()->action('StudentController@session2')
->with('message', 'flash-key');
return redirect()->route('session2')->with('message', 'flash-key');
return redirect()->back();
}
public function session2(Request $request){
return Session::get('message', 'no message');
}
4. Middleware。
- 中间件有什么作用
- Laravel 中间件提供一个方便的机制来过滤进入应用程序的 HTTP 请求
- 一个了解中间件的场景:有一个活动,在指定日期后开始,如果活动没有开始只能访问宣传页面。需要:
- 新建中间件
- 注册中间件
- 使用中间件
- 中间件的前置和后置操作
<?php
public function activity0(){
return '活动即将开始,敬请期待';
}
public function activity1(){
return '活动 1 进行中,谢谢您的参与';
}
public function activity2(){
return '活动 2 进行中,谢谢您的参与';
}
namespace App\Http\Middleware;
class Activity{
public function handle($request, \closure $next){
if(time() < strtotime('2029-08-05')){
return redirect('activity0');
}
return $next($request);
}
}
'activity' => \App\Http\Middleware\Activity::class,
Route::any('activity0', ['uses' => 'StudentController@activity0']);
Route::group(['middleware' => ['activity']], function(){
Route::any('activity1', ['uses' => 'StudentController@activity1']);
Route::any('activity2', ['uses' => 'StudentController@activity2']);
});
public function handle($request, \closure $next){
$response = $next($request);
var_dump($response);
echo '我是后置操作';
}