资讯专栏INFORMATION COLUMN

Laravel 5.8 前瞻

tianhang / 405人阅读

摘要:发布于年月,从那时起大约每六个月会发布一次的新版本。将会支持相对较新的来管理项目中的环境文件。弃用和辅助函数所有的和全局辅助函数都已弃用,将在中删除。将返回更干净的相同值。和通知和通知已从主项目中删除,并提取到第三方软件包中。

无论是从零开始创建新项目还是升级现有的项目,你都应该了解一下 Laravel 5.8 的新特性和变化。

Laravel 5.0 发布于 2015 年 2 月,从那时起大约每六个月会发布一次 5.x 的新版本。上一个版本(Laravel 5.7)于 2018 年 9 月发布,因此我们预计可以在 2019 年 3 月左右看到 Laravel 5.8的发行版。

当你创建一个新项目或升级现有的项目时,你应该注意到 Laravel 5.8中的新功能和一些重要的变更,在本文中,我们会为你快速的介绍一遍。

和往常一样,在升级 Laravel 版本之前,请务必仔细阅读并理解 升级指南,以确保升级过程的顺利。

下面,让我们一起了解一下Laravel 5.8 中的一些重要更新。

邮箱字段验证:

在 Laravel 5.8 中内置的email 验证规则将支持国际字符

如果你的项目中有如下表单验证规则:

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

并尝试验证邮箱hej@bär.se,在5.7及以前版本中,验证会失败,但是在5.8中将能通过验证。

5.7版本中表单验证逻辑与 SwiftMailer(Laravel使用的PHP mailer库) 的逻辑并不匹配,但是现在它们都符合 RFC6530 规范。

dotenv 3.0:

Laravel 5.8 将会支持 相对较新 的 dotenv 3.0 来管理项目中的 .env 环境文件。

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

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 将附带新的错误页面,其中包含极简主义的设计,旨在更适合各种网站和网络应用程序,而无需重新设计以适应主题。

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...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30157.html

相关文章

  • Laravel 5.8 正式发布(文档翻译已启动)

    摘要:现在面向所有人正式发布了。并且有计划将作为可选扩展包发布,你仍然可以在项目中使用它们。是最新的稳定版本,将在年月左右处理收到的错误修复和更新,并在年月左右之前进行安全修复。中文翻译中文翻译已启动,请关注更多翻译文章请见开发者社区 showImg(https://segmentfault.com/img/remote/1460000018318895?w=1680&h=859); Lar...

    hankkin 评论0 收藏0
  • PHP 7.4 前瞻:FFI

    摘要:扩展已经通过,正式成为的捆绑扩展库。第一步,从头文件把主要的数据结构和函数声明复制出来目前不支持预处理器除了和,所以宏定义要自己展开。 FFI扩展已经通过RFC,正式成为PHP 7.4的捆绑扩展库(Bundled Extensions)。 什么是FFI FFI(Foreign Function Interface),即外部函数接口,是指在一种语言里调用另一种语言代码的技术。PHP的FF...

    CompileYouth 评论0 收藏0
  • [开源] LaravelPlus - 基于 Laravel 魔改,为方便实际业务使用 - 开发中

    摘要:目的为了减少重复和新项目的配置麻烦等问题,就是为了骗星星如现有的生成工具虽然好用,但是不太喜欢样式和代码结构。有些本地,测试,线上的配置需要频繁改动的需要。 目的 为了减少重复 CURD 和新项目的配置麻烦等问题,(就是为了骗星星:LaravelPlus )如: 现有的 infyomlabs/laravel-generator CODE 生成工具虽然好用,但是不太喜欢样式和代码结构。...

    weknow619 评论0 收藏0
  • Wizard 开源文档管理系统1.0发布啦

    摘要:总结如果你在为公司寻找一款开源免费的开发文档文档管理工具,不妨考虑一下项目,一定不会让你失望的。 Wizard 是一款开源文档管理系统,项目地址为 https://github.com/mylxsw/wizard。这个项目是 我 在2017年就开始开发的,起初只是想做一款能够在公司内部把Swagger文档管理起来的工具,但在这近两年的时间里,一直断断续续的为其添加各种功能,现在终于下决...

    cod7ce 评论0 收藏0
  • 基于 Swoole 构建的 CTF AWD 比赛环境搭建与实践

    摘要:出题思路本次题目来自于我的一个外包项目实践。回合制比赛以分钟为一回合。选手在比赛过程中需要盗取到对手的密钥,以窃听他方内容,并修改己方密钥以放泄露动态该部分同样由中心服务器与完成。 Author: RytiaDate: 20190427Blog: www.zzfly.net本人才学疏浅,望君不吝赐教 背景 受学校老师邀请,为学弟学妹举办分享会介绍 AWD 相关经验,本人一时头脑风暴采用...

    GitCafe 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<