国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Manual Dokumentasi Cina Laravel 5.8 / 發(fā)行說(shuō)明

發(fā)行說(shuō)明

發(fā)行說(shuō)明


發(fā)行說(shuō)明

  • 版本控制方案
  • 支持策略
  • Laravel 5.8

版本控制方案

Laravel 的版本控制方案使用以下約定: 主版本號(hào).次版本號(hào).修訂號(hào)。次版本號(hào)框架每六個(gè)月(二月和八月)發(fā)布,而修訂號(hào)版本可能每周發(fā)布一次,修訂號(hào)版本 包含重大更改。

當(dāng)你從應(yīng)用程序中或者在包中引用 Laravel 框架或者其他組件時(shí),應(yīng)該始終使用版本約束,例如 5.7.*,因?yàn)?Laravel 的次要版本包含重大更改。但是,我們會(huì)努力確保你可以在一天或者更短時(shí)間內(nèi)完成更新。

主要版本之間的發(fā)布往往需要很多年,每次發(fā)布代表框架架構(gòu)和底層結(jié)構(gòu)發(fā)生了根本的改變。而目前并沒有準(zhǔn)備開發(fā)主版本號(hào)的計(jì)劃。

支持策略

對(duì)于 LTS 版本,例如 5.5,提供兩年的錯(cuò)誤修復(fù)和三年的安全修復(fù)。這些版本提供最長(zhǎng)時(shí)間的支持和維護(hù)。對(duì)于一般版本,則只是提供六個(gè)月的錯(cuò)誤修復(fù)和一年的安全修復(fù)。

版本發(fā)布時(shí)間Bug 修復(fù)截止時(shí)間安全修復(fù)截止時(shí)間
5.02015 年 2 月 4 日2015 年 8 月 4 日2016 年 2 月 4 日
5.1 (LTS)2015 年 6 月 9 日2017 年 6 月 9 日2018 年 6 月 9 日
5.22015 年 12 月 21 日2016 年 6 月 21 日2016 年 12 月 21 日
5.32016 年 8 月 23 日2017 年 9 月 23 日2017 年 8 月 23 日
5.42017 年 1 月 24 日2017 年 7 月 24 日2018 年 1 月 24 日
5.5 (LTS)2017 年 8 月 30 日2019 年 8 月 30 日2020 年 8 月 30 日
5.62018 年 2 月 7 日2018 年 8 月 7 日2019 年 2 月 7 日
5.72018 年 9 月 4 日2019 年 3 月 4 日2019 年 9 月 4 日
5.82019 年 2 月 26 日2019 年 8 月 26 日2020 年 2 月 26 日

Laravel 5.8

Laravel 5.8 在 Laravel 5.7 的基礎(chǔ)上繼續(xù)進(jìn)行優(yōu)化,包括引入新的 Eloquent 關(guān)聯(lián)關(guān)系(has-one-through)、優(yōu)化郵箱驗(yàn)證、基于約定的授權(quán)策略類自動(dòng)注冊(cè)、 DynamoDB 緩存及 Session 驅(qū)動(dòng)、優(yōu)化任務(wù)調(diào)度器的時(shí)區(qū)配置、支持分配多個(gè)認(rèn)證 guard 到廣播頻道、PSR-16 緩存驅(qū)動(dòng)規(guī)范、優(yōu)化 artisan serve 命令、支持 PHPUnit 8.0、支持 Carbon 2.0 、支持 Pheanstalk 4.0 ,以及多個(gè) bug 修復(fù)和可用性的提升。

Eloquent HasOneThrough 關(guān)聯(lián)關(guān)系

Eloquent 現(xiàn)在提供了對(duì) hasOneThrough 關(guān)聯(lián)類型的支持。例如,假設(shè) Supplier 模型類與 Account 模型類之間是一對(duì)一關(guān)聯(lián),并且 Account 模型類與 AccountHistory 模型類之間也是一對(duì)一關(guān)聯(lián),那么 Supplier 模型類與 AccountHistory 模型類之間可以通過(guò)  hasOneThrough 方法基于 Account 模型類建立遠(yuǎn)層的一對(duì)一關(guān)聯(lián)。你可以用 hasOneThrough 關(guān)聯(lián)關(guān)系通過(guò) Account 模型類訪問 AccountHistory 模型類:

/**
 * Get the account history for the supplier.
 */
public function accountHistory()
{
    return $this->hasOneThrough(AccountHistory::class, Account::class);
}

自動(dòng)尋找模型策略

當(dāng)使用 Laravel 5.7 時(shí),每個(gè)模型對(duì)應(yīng)的 認(rèn)證策略 都需要被顯式地注冊(cè)到應(yīng)用的 AuthServiceProvider 中:

/**
 * 當(dāng)前應(yīng)用的策略對(duì)應(yīng)關(guān)系
 *
 * @var array
 */
protected $policies = [
    'App\User' => 'App\Policies\UserPolicy',
];

Laravel 5.8 引進(jìn)了模型策略的自動(dòng)尋找,只要模型和策略的命名符合 Laravel 的標(biāo)準(zhǔn)約定。即策略必須在 Policies 路徑下,該路徑之上包含模型。舉個(gè)例子,模型可能放在 app 路徑下,則策略可以在放 app/Policies 路徑下。另外,策略名稱必須匹配模型名稱并且加上 Policy 后綴。這樣, User 模型將會(huì)對(duì)應(yīng)上 UserPolicy 類。

如果你想要提供自己的策略尋找邏輯,你可以使用 Gate::guessPolicyNamesUsing 方法來(lái)注冊(cè)一個(gè)自定義的回調(diào)函數(shù)。通常來(lái)說(shuō),這個(gè)方法應(yīng)該從你應(yīng)用的 AuthServiceProvider 中被調(diào)用:

use Illuminate\Support\Facades\Gate;

Gate::guessPolicyNamesUsing(function ($modelClass) {
    // return policy class name...
});

{note} 任何被顯式地映射到 AuthServiceProvider 中的策略都將優(yōu)先于隱式自動(dòng)尋找策略。

PSR-16 緩存規(guī)范

為了在存儲(chǔ)緩存項(xiàng)時(shí)允許更細(xì)粒度的過(guò)期時(shí)間并遵守 PSR-16 緩存標(biāo)準(zhǔn),我們將緩存項(xiàng)的有效期單位從分鐘調(diào)整到秒。Illuminate\Cache\Repository 及其擴(kuò)展類的 put、putManyadd、remembersetDefaultCacheTime 方法以及每個(gè)緩存存儲(chǔ)實(shí)現(xiàn)類的 put 方法對(duì)應(yīng)的有效期單位都做了這樣的調(diào)整。可以查看 相關(guān)的 PR 了解更多細(xì)節(jié)。

如果你的代碼中調(diào)用了上述方法,需要對(duì)相應(yīng)代碼進(jìn)行更新以確?,F(xiàn)在傳遞的有效期時(shí)間與之前一致(單位變成了秒,而不是之前的分鐘),作為替代方案,你還可以傳遞一個(gè) DateTime 實(shí)例來(lái)標(biāo)識(shí)緩存項(xiàng)的過(guò)期時(shí)間:

// Laravel 5.7 - 緩存30分鐘...
Cache::put('foo', 'bar', 30);

// Laravel 5.8 - 緩存30秒...
Cache::put('foo', 'bar', 30);

// Laravel 5.7 / 5.8 - 緩存30秒...
Cache::put('foo', 'bar', now()->addSeconds(30));

多個(gè)廣播認(rèn)證看守器

在 Laravel 之前發(fā)行的版本中,私有和到場(chǎng)廣播頻道通過(guò)應(yīng)用的默認(rèn)認(rèn)證 guard 對(duì)用戶進(jìn)行認(rèn)證。從 Laravel 5.8 開始,你可以分配多個(gè) guard 來(lái)對(duì)請(qǐng)求進(jìn)行認(rèn)證:

Broadcast::channel('channel', function() {
    // ...
}, ['guards' => ['web', 'admin']])

Token Guard 令牌哈希算法

Laravel 中提供基本 API 認(rèn)證的 token guard,現(xiàn)在支持以 SHA-256 哈希算法對(duì) API 令牌進(jìn)行存儲(chǔ)。這比存儲(chǔ)純文本令牌更加安全。要了解更多有關(guān)哈希令牌的細(xì)節(jié),請(qǐng)查閱完整的 API 認(rèn)證文檔。

注: 即便 Laravel 提供了一個(gè)關(guān)簡(jiǎn)單的、基于令牌的認(rèn)證 guard ,考慮到健壯性和提供了 API 認(rèn)證的線上應(yīng)用,我們強(qiáng)烈推薦你使用 Laravel Passport 。

改進(jìn) Email 驗(yàn)證器

Laravel 5.8 采用了 SwiftMailer 的 egulias/email-validator 包,改進(jìn)了 email 驗(yàn)證器的驗(yàn)證邏輯。之前的 Laravel Email 驗(yàn)證邏輯認(rèn)為有效的郵件地址,比如 example@b?r.se,現(xiàn)在可能會(huì)被判定無(wú)效。

默認(rèn)定時(shí)任務(wù)時(shí)區(qū)

Laravel 允許用戶使用 timezone 方法來(lái)自定義定時(shí)任務(wù)的時(shí)區(qū):

$schedule->command('inspire')
         ->hourly()
         ->timezone('America/Chicago');

如果你為每個(gè)定時(shí)任務(wù)都定義一個(gè)時(shí)區(qū)的話,這樣會(huì)比較繁瑣與麻煩。更簡(jiǎn)便的方法是在 app/Console/Kernel.php 文件內(nèi)定義一個(gè) schedule Timezone 方法。這個(gè)方法將會(huì)把默認(rèn)時(shí)區(qū)返回給所有的定時(shí)任務(wù):

/**
 * 獲取默認(rèn)定時(shí)任務(wù)時(shí)區(qū)。
 *
 * @return \DateTimeZone|string|null
 */
protected function scheduleTimezone()
{
    return 'America/Chicago';
}

中間表 /pivot 模型事件

在之前版本的 Laravel 中,當(dāng)附著,分離或同自定義中間表 / 多對(duì)多關(guān)系的 “pivot” 模型時(shí) Eloquent 模型事件不會(huì)被派遣。在現(xiàn)在的 Laravel 5.8 中,使用 定制中間表模型 時(shí),這些事件都將被派遣。

Artisan 調(diào)用改進(jìn)

Laravel 允許你通過(guò) Artisan::call 方法來(lái)調(diào)用 Artisan 。在之前發(fā)布的 Laravel 中,命令的選項(xiàng)是通過(guò)一個(gè)數(shù)組作為第二個(gè)參數(shù)來(lái)傳遞到方法中的:

use Illuminate\Support\Facades\Artisan;

Artisan::call('migrate:install', ['database' => 'foo']);

然而,Laravel 5.8 允許你傳遞完整的命令,包括其選項(xiàng)。它將作為第一個(gè)字符串參數(shù)到方法中:

Artisan::call('migrate:install --database=foo');

Mock / Spy 測(cè)試輔助方法

為了創(chuàng)建模擬對(duì)象更加方便, 新的 mockspy 方法已經(jīng)加入到基礎(chǔ) Laravel 測(cè)試用例中。這些方法自動(dòng)的綁定模擬類到容器中。例如:

// Laravel 5.7
$this->instance(Service::class, Mockery::mock(Service::class, function ($mock) {
    $mock->shouldReceive('process')->once();
}));

// Laravel 5.8
$this->mock(Service::class, function ($mock) {
    $mock->shouldReceive('process')->once();
});

Eloquent 資源鍵保持

當(dāng)從路由中返回 Eloquent 資源集合 時(shí), Laravel 會(huì)重置集合的鍵以使他們按簡(jiǎn)單的數(shù)字順序排列:

use App\User;
use App\Http\Resources\User as UserResource;

Route::get('/user', function () {
    return UserResource::collection(User::all());
});

當(dāng)使用 Laravel 5.8 時(shí), 你可以添加一個(gè) preserveKeys 屬性到資源類表明資源類的鍵是否保留。默認(rèn)情況下,為了和之前版本的 Laravel 保持一致,這些鍵會(huì)被重置:

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class User extends JsonResource
{
    /**
     * Indicates if the resource's collection keys should be preserved.
     *
     * @var bool
     */
    public $preserveKeys = true;
}

當(dāng) preserveKeys 的屬性值設(shè)置為 true 時(shí), 集合鍵會(huì)被保留:

use App\User;
use App\Http\Resources\User as UserResource;

Route::get('/user', function () {
    return UserResource::collection(User::all()->keyBy->id);
});

高階 orWhere Eloquent 方法

在之前發(fā)布的 Laravel 中,通過(guò) or query 操作符來(lái)合并多個(gè) Eloquent 模型作用域須使用閉包回調(diào):

// scopePopular 和 scopeActive 方法定義在 User 模型中...
$users = App\User::popular()->orWhere(function (Builder $query) {
        $query->active();
})->get();

Lavavel 5.8 引進(jìn)了 「高階」 orWhere 方法,使你可以不用閉包,從而實(shí)現(xiàn)對(duì)作用域的流暢鏈?zhǔn)秸{(diào)用。

$users = App\User::popular()->orWhere->active()->get();

Artisan Serve 改進(jìn)

在之前發(fā)布的 Laravel 中,Artisan 的 serve 方法會(huì)啟動(dòng)你的應(yīng)用服務(wù),監(jiān)聽 8000 端口。 如果一個(gè) serve 命令進(jìn)程已經(jīng)啟動(dòng)并占用了這個(gè)端口,那么通過(guò) serve 命令嘗試啟動(dòng)第二個(gè)應(yīng)用服務(wù)將會(huì)失敗。從 Laravel 5.8 起, serve 會(huì)掃描可用的端口直到 8009 ,讓你可以同時(shí)啟動(dòng)多個(gè)應(yīng)用服務(wù)。

模板文件映射

當(dāng)編譯 Blade 模板時(shí),Laravel 現(xiàn)在會(huì)在編譯文件的頂部添加注釋,其中包含原始 Blade 模板路徑。

DynamoDB 緩存 / Session 驅(qū)動(dòng)

Laravel 5.8 引入了 DynamoDB 緩存和 session 驅(qū)動(dòng)。DynamoDB 是 Amazon Web Services 提供的無(wú)服務(wù)器 NoSQL 數(shù)據(jù)庫(kù)。默認(rèn)的 dynamodb 緩存驅(qū)動(dòng)配置可以在 Laravel 5.8 的 緩存配置文件 中找到。

Carbon 2.0 支持

Laravel 5.8 提供對(duì) Carbon 日期處理庫(kù) ~2.0 發(fā)行版本的支持。

Pheanstalk 4.0 支持

Laravel 5.8 提供對(duì) Pheanstalk 隊(duì)列庫(kù) ~4.0 發(fā)行版本的支持。如果你的應(yīng)用正在使用 Pheanstalk 庫(kù),請(qǐng)通過(guò) Composer 升級(jí)該庫(kù)到  ~4.0 發(fā)行版。

本文章首發(fā)在 LearnKu.com 網(wǎng)站上。