laravel 5.3 php版本,发行版本说明 | 序言 | Laravel 5.3 中文文档

发行版本说明

由 学院君 创建于4年前, 最后更新于 11个月前

版本号 #2

23296 views

12 likes

0 collects

1、支持政策

对于 LTS 版本,比如 Laravel 5.1,我们将会提供为期两年的 bug 修复和三年的安全修复支持。LTS 版本将会提供最长时间的支持和维护。

对于其他通用版本,只提供六个月的 bug 修复和一年的安全修复支持,比如 Laravel 5.3。

2、Laravel 5.3

Laravel 5.3 在 5.2 的基础上继续进行优化,提供了大量新功能和新特性:基于驱动的通知系统;通过Laravel Echo提供强大的实时支持;通过Laravel Passport实现无痛的OAuth2服务器;通过Laravel Scout实现全文模型搜索;在Laravel Elixir中支持Webpack;“可邮寄”的对象;明确分离web和api路由;基于闭包的控制台命令;存储上传文件的辅助函数;支持POPO和单动作控制器;以及优化前端脚手架;等等等等。

通知(Notifications)

注:Laracasts上有关于此特性的免费视频教程。

Laravel Notifications 为我们提供了简单、优雅的API用于在不同的发行渠道中发送通知,例如邮件、SMS、Slack等等。例如,你可以定义一个单据已经支付的通知,然后通过邮件和SMS发送这个通知,你可以使用一个很简单的来实现:

$user->notify(new InvoicePaid($invoice));

Laravel社区已经为通知系统编写了各种各样的驱动,包括对iOS和Android通知的支持,要学习更多关于通知系统的细节,查看其相应文档。

WebSockets/事件广播

事件广播在之前版本的Laravel中已经有了,Laravel 5.3 通过为已私有和已存在的 WebSocket 频道添加频道级认证对此功能进行了极大的优化和提升:

/*

* Authenticate the channel subscription...

*/

Broadcast::channel('orders.*', function ($user, $orderId) {

return $user->placedOrder($orderId);

});

Laravel Echo,通过NPM安装的全新的JavaScript包,将和Laravel 5.3一起发布,用于为订阅频道以及在客户端JavaScript应用中监听服务器端事件提供了简单、优美的API,Echo包含对Pusher和Socket.io的支持:

Echo.channel('orders.' + orderId)

.listen('ShippingStatusUpdated', (e) => {

console.log(e.description);

});

为了订阅到传统频道,Laravel Echo还使得订阅到提供谁在监听给定频道信息的已存在频道变得简单:

Echo.join('chat.' + roomId)

.here((users) => {

//

})

.joining((user) => {

console.log(user.name);

})

.leaving((user) => {

console.log(user.name);

});

要学习更多关于Echo和事件广播的内容,请参考其对应文档。

Laravel Passport(OAuth2 服务器)

注:Laracasts上提供了关于这一新特性的免费视频教程。

Laravle 5.3 使用Laravel Passport让API认证变得简单。Laravel Passport可以在几分钟内为应用提供一个完整的Oauth2服务器实现,Passport基于 Alex Bilbie维护的 League OAuth2 server 实现。

Passport使得通过OAuth2授权码获取访问令牌(access token)变得轻松,你还可以允许用户通过Web UI创建“个人访问令牌”。为了让你更快上手,Passport内置了一个Vue组件,该组件提供了OAuth2后台界面功能,允许用户创建客户端、撤销访问令牌,以及更多其他功能:

如果你不想使用Vue组件,欢迎提供你自己的用于管理客户端和访问令牌的前端后台。Passport提供了一个简单的JSON API,你可以在前端使用任何JavaScript框架与之集成。

当然,Passport还让定义可能在应用消费你的API期间被请求的访问令牌域变得简单:

Passport::tokensCan([

'place-orders' => 'Place new orders',

'check-status' => 'Check order status',

]);

此外,Passport还包含了用于验证访问令牌认证请求包含必要令牌域的中间件:

Route::get('/orders/{order}/status', function (Order $order) {

// Access token has "check-status" scope...

})->middleware('scope:check-status');

最后,Passport还支持从JavaScript应用访问你的API,而不必担心访问令牌传输,Passport通过加密JWT cookies和同步CSRF令牌来实现这一功能,从而让开发者专注于业务开发。

想要学习更多Passport细节,请查看其文档。

搜索(Laravel Scout)

Laravel Scout 提供了一个简单的、基于驱动的针对Eloquent模型的全文搜索解决方案。通过模型观察者,Scout会自动同步更新Eloquent记录的搜索索引,目前,Scout使用 Algolia 驱动,不过,编写自己的驱动很简单,你可以通过自己的搜索实现扩展Scout。

你可以简单通过添加 Searchable trait到模型让模型变得可搜索:

namespace App;

use Laravel\Scout\Searchable;

use Illuminate\Database\Eloquent\Model;

class Post extends Model

{

use Searchable;

}

trait被添加到模型之后,当保存模型实例的时候其信息将会被同步到搜索索引:

$order = new Order;

// ...

$order->save();

模型被索引之后,就可以通过模型进行全文搜索了,甚至还可以对搜索结果进行分页:

return Order::search('Star Trek')->get();

return Order::search('Star Trek')->where('user_id', 1)->paginate();

当然,Scout还有很多其他特性,具体请查看其文档。

可邮寄对象

注:Laracasts上有关于该特性的免费视频教程。

Laravel 5.3支持可邮寄对象,这些对象可以以一个简单对象的形式表示邮件信息,而不再需要在闭包中自定义邮件信息,例如,你可以定义一个简单的邮寄对象用作欢迎邮件:

class WelcomeMessage extends Mailable

{

use Queueable, SerializesModels;

/**

* Build the message.

*

* @return $this

*/

public function build()

{

return $this->view('emails.welcome');

}

}

可邮寄对象被创建以后,你可以使用一个简单、优雅的API将其发送给用户。可邮寄对象可以在浏览代码的同时了解邮件信息:

Mail::to($user)->send(new WelcomeMessage);

当然,你还可以标记可邮寄对象为“队列化”,这样这封邮件就会在后台通过队列任务发送:

class WelcomeMessage extends Mailable implements ShouldQueue

{

//

}

更多可邮寄对象细节请查看其对应文档。

存储上传文件

注:Laracasts上有关于该特性的免费视频教程。

在web应用中,最常见的任务之一就是保存用户上传文件了,比如头像、照片、文档等等。Laravel 5.3通过在上传文件实例上使用新的 store 方法让这一工作变得简单。只需要简单调用 store 方法并传入文件保存路径即可:

/**

* Update the avatar for the user.

*

* @param  Request  $request

* @return Response

*/

public function update(Request $request)

{

$path = $request->file('avatar')->store('avatars', 's3');

return $path;

}

更多细节请查看其完整文档。

Webpack & Laravel Elixir

Laravel Elixir 6.0和Laravel 5.3一起发布,新版本将捆绑支持Webpack和Rollup JavaScript模块。默认情况下,Laravel 5.3 的 gulpfile.js 文件现在已经使用Webpack来编译JavaScript:

elixir(mix => {

mix.sass('app.scss')

.webpack('app.js');

});

前端架构

注:Laracasts有关于本特性的免费视频教程。

Laravel 5.3 提供了一个更加现代的前端架构。这主要会影响make:auth命令生成的认证脚手架。不再从CDN中加载前端资源,所有依赖都被定义在默认的 package.json 文件中。

此外,支持单文件的Vue组件现在已经开箱支持, resources/assets/js/components 目录下包含了一个简单的示例组件 Example.vue ,新的 resources/assets/js/app.js 文件将会启动被配置你的JavaScript库以及Vue组件。

这种架构对开始开发现代的、强大的JavaScript应用提供了更好的指导,而不需要要求应用使用任何给定JavaScript或者CSS框架。关于如何进行现代Laravel前端开发,请查看对应文档。

路由文件

默认情况下,新安装的Laravel 5.3应用在新的顶级目录routes下包含两个HTTP路由文件。web和api路由文件在如何分割Web界面和API路由方面提供了指导。api路由文件中的路由会通过 RouteServiceProvider 自动添加api前缀和auth:api中间件。

闭包控制台命令

除了通过命令类定义之外,现在Artisan命令还可以在 app/Console/Kernel.php 文件的 commands 方法中以简单闭包的方式定义。在新安装的Laravel 5.3应用中, commands 方法会加载 routes/console.php 文件,从而允许你基于闭包、以路由风格定义控制台命令:

Artisan::command('build {project}', function ($project) {

$this->info('Building project...');

});

更多详情请查看完整的Artisan文档。

$loop变量

注:Laracasts中有关于此特性的免费视频教程。

当我们在Blade模板中循环遍历的时候,$loop变量将会在循环中生效。通过该变量可以访问很多有用的信息,比如当前循环索引值,以及当前循环是第一个还是最后一个迭代:

@foreach ($users as $user)

@if ($loop->first)

This is the first iteration.

@endif

@if ($loop->last)

This is the last iteration.

@endif

This is user {{ $user->id }}

@endforeach

更多详情请查看完整的Blade文档。

3、早期版本

更多早期版本发行说明:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值