命令 php artisan make:middleware
中间件的定义:
1)命名空间的定义
2)可以继承中间件
3)excpet字段 可以定义一些规则,比如密码不去除前后空格。
handle()做中间件的处理逻辑
handle(请求对象,下一个请求对象,)
使用中间件:1定义 app/middleware
2.注册 app/kernel.php
日志文件位置:storage/logs/laravel.log
<?php
namespace App\Http\Middleware;
use Closure;
use Log;
use DB;
class myMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
//继续执行之前拦截
Log::info('url ='.$request->path());
//开启查询日志
DB::enableQueryLog();
//继续执行当前请求
$response = $next($request);
dump(DB::getQueryLog());//必须开启查询日志以后才能用
return $response;
}
/*
结束请求时,会自动调用该方法
*/
public function terminate()
{
dd(DB::getQueryLog());
}
}
1)全局中间件
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\myMiddleware::class,
];
2)别名中间件
3)路由注册:路由文件中使用中间件
定义路由加后缀 Route::get('/test',['middleware'=>'my',//中间件名称
'users'=>'IndexController@test//
'as'=>'test_router',//路由名称
']) ;
4)控制器中使用中间件:在类的构造方法中使用中间件
课程结束自己需要了解的东西:
1.如何在laravel框架中使用第三方库
2.编写自己的库(如在laravel中实现支付宝接口)
3.底层概念的深刻理解