序言 ―― 发行版本说明

最后更新于: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进行处理,因为该扩展较前者而言维护的更加活跃。
';