序言 ―― 发行版本说明
最后更新于:2022-04-01 04:09:37
# 序言 —— 发行版本说明
## 支持政策
LTS,将会提供两年的bug修复和三年的安全修复支持。这些版本将会提供最长时间的支持和维护。
对于其他通用版本,只提供六个月的bug修复和一年的安全修复支持。
## Laravel 5.1.11
Laravel 5.1.11 引入了“开箱即用”的[授权](http://laravelacademy.org/post/577.html)支持!使用简单的回调或策略类即可方便地管理应用的授权逻辑,并且授权动作使用简单且优雅的方法。
想要了解更多信息,请查看[授权文档](http://laravelacademy.org/post/577.html)。
## Laravel 5.1.4
Laravel 5.1.4 将登录次数限制引入框架,更多详情请参考[认证限制](http://laravelacademy.org/post/163.html#ipt_kb_toc_163_8)一节。
## Laravel 5.1
Laravel 5.1 在 5.0 的基础上继续进行优化和提升,接受PSR-2代码风格,新增事件广播机制,中间件参数,Artisan优化,等等。
### PHP 5.5.9+
由于PHP 5.4将会在今年9月份“寿终正寝”,并且PHP开发组不会再提供安全更新,Laravel 5.1 要求PHP5.5.9或更高版本。PHP5.5.9兼容一些最新版本的流行PHP库如Guzzle和AWS SDK。
### LTS
Laravel 5.1 是Laravel 第一个长期支持版本,将会提供两年的bug修复和安全修复,这是迄今为止,Laravel提供的最大跨度的支持,并且将会持续为更多的企业用户及普通用户提供稳定平滑的支持。
### PSR-2
[PSR-2代码风格指南](https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-2-coding-style-guide-cn.md)已经被Laravel框架采取为默认风格指南,此外,所有代码生成器已经被更新到生成兼容PSR-2语法的代码。
### 文档
Laravel文档的每一个页面都进行了一丝不苟的审查和引人注目的优化,所有代码示例都被审查并且扩展到更好的支持上下文相关性。
### 事件广播
在很多现代的web应用中,web套接字被用于实现实时的,即时更新的用户接口,当服务器上的某些数据更新后,通常一条消息将会通过websocket连接发送到客户端并进行处理。
为了帮助你构建这样类型的应用,Laravel使得通过websocket连接广播事件变得简单可行。广播Laravel事件允许你在服务端代码和客户端JavaScript框架之间共享相同的事件名称。
更多关于事件广播的内容请查看[事件](http://laravelacademy.org/post/198.html)一节。
### 中间件参数
Laravel 5.1里,中间件可以接受额外的自定义参数,例如,如果你的应用需要在执行给定的action之前验证被授予指定“角色”的认证用户,可以创建一个RoleMiddleware来接收角色名称作为额外参数:
~~~
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware
{
/**
* 运行请求过滤器.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string $role
* @return mixed
*/
public function handle($request, Closure $next, $role)
{
if (! $request->user()->hasRole($role)) {
// 跳转...
}
return $next($request);
}
}
~~~
中间件参数可以再定义路由时通过:分隔中间件名称和参数名称来指定,多个参数可以通过逗号进行分隔:
~~~
Route::put('post/{id}', ['middleware' => 'role:editor', function ($id) {
//
}]);
~~~
更多关于中间件的内容,请查看[中间件](http://laravelacademy.org/post/57.html)一节。
### 测试革新
Laravel中内置的测试功能获得了引入注目的提升,多个新方法提供了平滑的,富有变现力的接口和应用进行交互并测试响应:
~~~
public function testNewUserRegistration(){
$this->visit('/register')
->type('Taylor', 'name')
->check('terms')
->press('Register')
->seePageIs('/dashboard');
}
~~~
更多有关测试的内容,请查看[测试](http://laravelacademy.org/post/238.html)一节。
### 模型工厂
Laravel现在可以通过使用模型工厂附带一种简单的方式类创建Eloquent模型存根,模型工厂允许你为Eloquent模型定义一系列默认属性,然后为测试或数据库填充生成模型实例。模型工厂还可以利用强大的PHP扩展库[Faker](https://github.com/fzaninotto/Faker)类生成随机的属性数据。
~~~
$factory->define('App\User', function ($faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => str_random(10),
'remember_token' => str_random(10),
];
});
~~~
更多关于模型工厂的内容,请查看[模型工厂](http://laravelacademy.org/post/238.html#model-factories)一节。
### Artisan优化
Artisan命令可以通过使用一个简单的,类似路由风格的“签名”(提供了一个非常简单的接口来定义命令行参数和选项)来定义:
~~~
/**
* 命令行的名称和签名.
*
* @var string
*/
protected $signature = 'email:send {user} {--force}';
~~~
更多关于Artisan的内容,请查看[命令行](http://laravelacademy.org/post/170.html)一节。
### 目录结构
为了更好地表达意图,`app/Commands`目录被重命名为`app/Jobs`,此外,`app/Handlers`被合并到`app/Listeners`目录。然而这并不是破坏式改变所以使用Laravel 5.1并不强制要求更新到新的目录结构。
### 加密
在之前的Laravel版本中,加密通过PHP扩展mcrypt进行处理,从5.1开始,加密改由通过PHP的另一个扩展openssl进行处理,因为该扩展较前者而言维护的更加活跃。