不管是从零开始建立新项目仍是升级现有的项目,你都应该了解一下
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 规范。缓存
Laravel 5.8
将会支持 相对较新 的 dotenv 3.0
来管理项目中的 .env
环境文件。安全
dotenv 3.0
中的关键更新是支持环境文件中支持多行字符串和保留字符串末尾的空格,例如:markdown
DEVELOPMENT_APP_KEY="specialstringfor thisapp"
在以前的版本中,这仅会返回 specialstringfor
,但在 Laravel 5.8
里,
它会解析整个 specialstringfor thisapp
。新版本还会保留字符串末尾的空格,而在以前的版本里,空格会被忽略。
对于须要多行 API 秘钥以提升安全性的场景来讲,这是一个很棒的更新。
这不是一个新功能,而是升级项目时须要注意的重要关键点。
若是您的项目中有可填写的东西,而且您使用 php artisan vendor:publish
命令定制了组件,则文件夹名称稍有变化,即 /resources/views/vendor/mail/markdown
目录如今名为 /resources/views/vendor/mail/text
。 这是由于两个文件夹均可以包含 markdown 代码,用于制做带有纯文本的漂亮响应式的 html 模板。 调用 markdown 文件夹文本更合乎逻辑。
Laravel 5.8 将附带新的错误页面,其中包含极简主义的设计,旨在更适合各类网站和网络应用程序,而无需从新设计以适应主题。
Laravel 5.7 404 视图 「上面」 和 5.8 404 视图 「下面」
若是你愿意,仍然能够自定义错误页面或者导入之前的设计(请查看 自定义laravel错误页面的教程)。
全部的 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 代码 ,你会看到 他们已经使用了静态代理版本了。
请注意,若是你正在使用 Laravel 的缓存组件,当你传入一个 integer 型的 ttl
参数给缓存函数时,5.8
中会被设置为以秒为单位生存时间,而不是 5.7
中的分钟,例如:
Cache::put('foo', 'bar', 30);
在 Laravel 5.7
中,foo
会被存储 30 分钟,而在 5.8
里仅仅会存储30秒。这是一个简单但 很是重要 的更新。
若是您在 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'
您如今能够选择在 Laravel 5.8 中使用 Carbon 1 或 Carbon 2 做为 DateTime 函数。点击这里 Carbon migration guide 来肯定你是否真的要启用 Carbon 2。
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...