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

Laravel 5.8 ??? ?? ??? / 發(fā)行說明

發(fā)行說明

發(fā)行說明


發(fā)行說明

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

版本控制方案

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

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

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

支持策略

對于 LTS 版本,例如 5.5,提供兩年的錯誤修復和三年的安全修復。這些版本提供最長時間的支持和維護。對于一般版本,則只是提供六個月的錯誤修復和一年的安全修復。

版本發(fā)布時間Bug 修復截止時間安全修復截止時間
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 的基礎上繼續(xù)進行優(yōu)化,包括引入新的 Eloquent 關聯(lián)關系(has-one-through)、優(yōu)化郵箱驗證、基于約定的授權(quán)策略類自動注冊、 DynamoDB 緩存及 Session 驅(qū)動、優(yōu)化任務調(diào)度器的時區(qū)配置、支持分配多個認證 guard 到廣播頻道、PSR-16 緩存驅(qū)動規(guī)范、優(yōu)化 artisan serve 命令、支持 PHPUnit 8.0、支持 Carbon 2.0 、支持 Pheanstalk 4.0 ,以及多個 bug 修復和可用性的提升。

Eloquent HasOneThrough 關聯(lián)關系

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

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

自動尋找模型策略

當使用 Laravel 5.7 時,每個模型對應的 認證策略 都需要被顯式地注冊到應用的 AuthServiceProvider 中:

/**
 * 當前應用的策略對應關系
 *
 * @var array
 */
protected $policies = [
    'App\User' => 'App\Policies\UserPolicy',
];

Laravel 5.8 引進了模型策略的自動尋找,只要模型和策略的命名符合 Laravel 的標準約定。即策略必須在 Policies 路徑下,該路徑之上包含模型。舉個例子,模型可能放在 app 路徑下,則策略可以在放 app/Policies 路徑下。另外,策略名稱必須匹配模型名稱并且加上 Policy 后綴。這樣, User 模型將會對應上 UserPolicy 類。

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

use Illuminate\Support\Facades\Gate;

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

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

PSR-16 緩存規(guī)范

為了在存儲緩存項時允許更細粒度的過期時間并遵守 PSR-16 緩存標準,我們將緩存項的有效期單位從分鐘調(diào)整到秒。Illuminate\Cache\Repository 及其擴展類的 put、putManyaddremembersetDefaultCacheTime 方法以及每個緩存存儲實現(xiàn)類的 put 方法對應的有效期單位都做了這樣的調(diào)整??梢圆榭?相關的 PR 了解更多細節(jié)。

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

// 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));

多個廣播認證看守器

在 Laravel 之前發(fā)行的版本中,私有和到場廣播頻道通過應用的默認認證 guard 對用戶進行認證。從 Laravel 5.8 開始,你可以分配多個 guard 來對請求進行認證:

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

Token Guard 令牌哈希算法

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

注: 即便 Laravel 提供了一個關簡單的、基于令牌的認證 guard ,考慮到健壯性和提供了 API 認證的線上應用,我們強烈推薦你使用 Laravel Passport 。

改進 Email 驗證器

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

默認定時任務時區(qū)

Laravel 允許用戶使用 timezone 方法來自定義定時任務的時區(qū):

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

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

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

中間表 /pivot 模型事件

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

Artisan 調(diào)用改進

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

use Illuminate\Support\Facades\Artisan;

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

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

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

Mock / Spy 測試輔助方法

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

// 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 資源鍵保持

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

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

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

當使用 Laravel 5.8 時, 你可以添加一個 preserveKeys 屬性到資源類表明資源類的鍵是否保留。默認情況下,為了和之前版本的 Laravel 保持一致,這些鍵會被重置:

<?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;
}

preserveKeys 的屬性值設置為 true 時, 集合鍵會被保留:

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 中,通過 or query 操作符來合并多個 Eloquent 模型作用域須使用閉包回調(diào):

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

Lavavel 5.8 引進了 「高階」 orWhere 方法,使你可以不用閉包,從而實現(xiàn)對作用域的流暢鏈式調(diào)用。

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

Artisan Serve 改進

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

模板文件映射

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

DynamoDB 緩存 / Session 驅(qū)動

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

Carbon 2.0 支持

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

Pheanstalk 4.0 支持

Laravel 5.8 提供對 Pheanstalk 隊列庫 ~4.0 發(fā)行版本的支持。如果你的應用正在使用 Pheanstalk 庫,請通過 Composer 升級該庫到  ~4.0 發(fā)行版。

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