Laravel 5.8 前瞻

file

不管是從零開始建立新項目仍是升級現有的項目,你都應該瞭解一下 Laravel 5.8 的新特性和變化。

Laravel 5.0 發佈於 2015 年 2 月,從那時起大約每六個月會發布一次 5.x 的新版本。上一個版本(Laravel 5.7)於 2018 年 9 月發佈,所以咱們預計能夠在 2019 年 3 月左右看到 Laravel 5.8的發行版。php

當你建立一個新項目或升級現有的項目時,你應該注意到 Laravel 5.8中的新功能和一些重要的變動,在本文中,咱們會爲你快速的介紹一遍。html

和往常同樣,在升級 Laravel 版本以前,請務必仔細閱讀並理解 升級指南,以確保升級過程的順利。laravel

下面,讓咱們一塊兒瞭解一下Laravel 5.8 中的一些重要更新。git

郵箱字段驗證:

在 Laravel 5.8 中內置的email 驗證規則將支持國際字符github

若是你的項目中有以下表單驗證規則:數據庫

$request->validate([ 'email' => 'email', ]);

並嘗試驗證郵箱hej@bär.se,在5.7及之前版本中,驗證會失敗,可是在5.8中將能經過驗證。api

5.7版本中表單驗證邏輯與 SwiftMailer(Laravel使用的PHP mailer庫) 的邏輯並不匹配,可是如今它們都符合 RFC6530 規範。緩存

dotenv 3.0:

Laravel 5.8 將會支持 相對較新 的 dotenv 3.0 來管理項目中的 .env 環境文件。安全

dotenv 3.0 中的關鍵更新是支持環境文件中支持多行字符串和保留字符串末尾的空格,例如:markdown

DEVELOPMENT_APP_KEY="specialstringfor
thisapp"

在以前的版本中,這僅會返回 specialstringfor,但在 Laravel 5.8 裏,
它會解析整個 specialstringfor thisapp。新版本還會保留字符串末尾的空格,而在以前的版本里,空格會被忽略。

對於須要多行 API 祕鑰以提升安全性的場景來講,這是一個很棒的更新。

更改 Mailables 的目錄名稱:

這不是一個新功能,而是升級項目時須要注意的重要關鍵點。

若是您的項目中有可填寫的東西,而且您使用 php artisan vendor:publish 命令定製了組件,則文件夾名稱稍有變化,即 /resources/views/vendor/mail/markdown 目錄如今名爲 /resources/views/vendor/mail/text 。 這是由於兩個文件夾均可以包含 markdown 代碼,用於製做帶有純文本的漂亮響應式的 html 模板。 調用 markdown 文件夾文本更合乎邏輯。

新的錯誤頁面模板:

Laravel 5.8 將附帶新的錯誤頁面,其中包含極簡主義的設計,旨在更適合各類網站和網絡應用程序,而無需從新設計以適應主題。

file

Laravel 5.7 404 視圖 「上面」 和 5.8 404 視圖 「下面」

若是你願意,仍然能夠自定義錯誤頁面或者導入之前的設計(請查看 自定義laravel錯誤頁面的教程)。

棄用 Array 和 String 輔助函數:

全部的 array_ *str_ * 全局輔助函數都已棄用,將在 Laravel 5.9 中刪除。 應該使用 Arr ::Str :: 方法。 若是您不能或不想從新編寫現有的代碼和有可用於維護功能的軟件包,但若是您須要使用它們,如今習慣於使用新的命令行是一種好習慣。

當前版本搜索 array_* 方法:

function array_add($array, $key, $value)

應該換成:

Arr::add($array, $key, $value)

當前版本搜索 str_* 方法:

function str_contains($haystack, $needles)

應該換成:

Str::contains($haystack, $needles);

事實上,若是 你檢查了 array_ 和 str_ 全局助手函數的 5.8 代碼 ,你會看到 他們已經使用了靜態代理版本了。

Caching --- 過時時間(ttl)如今是以秒鐘而不是分鐘來描述:

請注意,若是你正在使用 Laravel 的緩存組件,當你傳入一個 integer 型的 ttl 參數給緩存函數時,5.8 中會被設置爲以秒爲單位生存時間,而不是 5.7 中的分鐘,例如:

Cache::put('foo', 'bar', 30);

Laravel 5.7 中,foo 會被存儲 30 分鐘,而在 5.8 裏僅僅會存儲30秒。這是一個簡單但 很是重要 的更新。

MySQL 中的 JSON 值:

若是您在 MySQL 和 MariaDB 數據庫列中存儲 JSON 值,則在 5.7 Laravel 中將返回用雙引號括起來的值。 5.8 將返回更乾淨的相同值。

如下是 Laravel 升至指南中說明更改的示例:

$value = DB::table('users')->value('options->language');

dump($value);

// Laravel 5.7...
'"en"'

// Laravel 5.8...
'en'

Carbon 2 的版本支持

您如今能夠選擇在 Laravel 5.8 中使用 Carbon 1 或 Carbon 2 做爲 DateTime 函數。點擊這裏 Carbon migration guide 來肯定你是否真的要啓用 Carbon 2。

Nexmo 和 Slack Notification 通知:

Nexmo 和 Slack Notification 通知已從 Laravel 主項目中刪除,並提取到第三方軟件包中。

要在項目中繼續使用 Slack 或 Nexmo 功能,您須要使用:

composer require laravel/nexmo-notification-channel
composer require laravel/slack-notification-channel

而後能夠像之前同樣配置和使用它們。

因此這幾乎涵蓋了你應該注意的關鍵變化。咱們老是喜歡在 Welcm Software 上查看新的軟件版本,並期待很快發佈 5.8 版本。

更多翻譯文章請見 Laravel 開發者社區 https://learnku.com/laravel/c...
相關文章
相關標籤/搜索