在日常开发中,我们通常会对请求提交的参数进行一些基本的处理,其中一项就是过滤掉提交参数的前后空白字符,避免出现异常。
但是在今天学习 Laravel 源码的过程中发现,Laravel 已经默认提供了一个全局中间件:TrimStrings 来替我们做这件事。
因此我们在使用 Laravel 开发过程中就无需额外考虑请求参数中的前后空白字符串了。
当然有的小伙伴会问,那如果参数是密码呢?密码中的前后空白字符是密码的合法组成之一,比如:“ 02045.com ”和“02405.com”应该是两个不同的密码。
关于这点 Laravel 也替我们想到了,在该中间件中忽略掉了 password 和 password_confirmation 两个参数。
附1: \App\Http\Middleware\TrimStrings::class 源码
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array
*/
protected $except = [
'password',
'password_confirmation',
];
}
附2:Illuminate\Foundation\Http\Middleware\TrimStrings 源码
<?php
namespace Illuminate\Foundation\Http\Middleware;
class TrimStrings extends TransformsRequest
{
/**
* The attributes that should not be trimmed.
*
* @var array
*/
protected $except = [
//
];
/**
* Transform the given value.
*
* @param string $key
* @param mixed $value
* @return mixed
*/
protected function transform($key, $value)
{
if (in_array($key, $this->except, true)) {
return $value;
}
return is_string($value) ? trim($value) : $value;
}
}