无论是从零开始创建新项目还是升级现有的项目,你都应该了解一下 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...

Laravel 5.8 前瞻相关推荐

  1. Laravel 5.8 前瞻 1

    无论是从零开始创建新项目还是升级现有的项目,你都应该了解一下 Laravel 5.8 的新特性和变化. Laravel 5.0 发布于 2015 年 2 月,从那时起大约每六个月会发布一次 5.x 的 ...

  2. 2022-2028年中国装配式装修行业市场研究及前瞻分析报告

    [报告类型]产业研究 [报告价格]¥4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国装配式装修行业市场行业相关概述.中国装 ...

  3. Laravel/Lumen 使用 Redis队列

    一.概述 在Web开发中,我们经常会遇到需要批量处理任务的场景,比如群发邮件.秒杀资格获取等,我们将这些耗时或者高并发的操作放到队列中异步执行可以有效缓解系统压力.提高系统响应速度和负载能力. 二.配 ...

  4. php – Laravel 7 Session Lifetime

    根据Laravel config / session.php /* |----------------------------------------------------------------- ...

  5. Laravel中Redis的配置和使用

    引入redis composer require predis/predis 会在composer.json中引入最新版本的predis composer update 把下载predis 库加入到v ...

  6. Laravel和Thinkphp有什么区别,哪个框架好用

    Laravel和Thinkphp这两个php框架对于php程序员都不陌生,新手可能对Thinkphp比较熟,也是国内比较出名的开源框架,更高级的Laravel一般有点经验的才使用. TP框架: Thi ...

  7. Laravel Dcat Admin 安装

    安装 环境 PHP >= 7.1 Laravel 5.5.0 ~ 7.* Fileinfo PHP Extension 开始安装 如果安装过程中出现 composer 下载过慢或安装失败的情况, ...

  8. Laravel 7发行说明

    版本化方案 Laravel及官方发布的包皆遵循 语义版本化.主要框架版本每六个月发布一次 (~2月和~8月),而次要和补丁版本可能每周发布一次.次要版本和补丁 决不 包含非兼容性更改. 引入 Lara ...

  9. Lumen / Laravel 使用网易邮箱 SMTP 发送邮件

    Laravel 是目前最流行的PHP框架,而Lumen 是 Laravel 的精简版,主要用于接口开发. Laravel 邮件发送服务基于 Symfony 组件 Swift Mailer. 本文记录了 ...

最新文章

  1. mysql怎么升级_MySQL UPDATE 更新
  2. mysql数据库1067错误
  3. 基类使用私有数据_C++作业之多继承与虚基类
  4. 学习笔记之数据可视化(二)—— 页面布局(下)
  5. js获取html元素并且修改属性,JavaScript中获取和修改元素属性的值
  6. 03-07 APP 控件交互
  7. Java基础笔记(2) 程序入口 关键字 标识符 常量 变量
  8. PHP基于gettexts实现多语言i18n利用PoEdit
  9. 微软必应词典客户端的案例分析——个人Week3作业
  10. 大神论坛 利用活跃变量分析来去掉vmp的大部分垃圾指令
  11. 多文件自平衡云传输(二)资源接收 断点续传篇 —————— 开开开山怪
  12. Vue-router的使用
  13. 简单有效解决onenote无法设置或修改默认的英文字体“Calibri”(简单实用)
  14. 机器学习知识总结 —— 11. 关于目标检测中的IoU是什么
  15. 为什么高级程序员不必担心自己的技术过时?
  16. 西安前端开发工程师待遇|哎呦不错呦
  17. 应届年薪80万!这些程序员活得实在太太太爽了!
  18. ArcGIS Runtime Esri新的离线地图数据格式——移动地图包(转载自Esri中国)
  19. Axure怎样制作内部框架
  20. 电梯模拟 数据结构课设

热门文章

  1. python程序设计,猜数游戏编程实践课程实验
  2. w ndows10怎么没体验指数,Win10如何使用WinSAT测试Windows体验指数?
  3. 使用Glide加载圆角矩形图片、圆形图片
  4. Esp8266 进阶之路19 【外设篇①】esp8266驱动 ds18b20、dht11 温湿度传感器,采集温湿度传感器到服务器。(附带Demo)
  5. 开发随笔——花生壳错误“您的局域网服务器连接失败,请检查局域网IP与端口“
  6. 在失败的滴滴出行LOGO上谈APP设计
  7. Android--耗电优化
  8. 好文:中国Saas蜕变史
  9. AD实用操作(三)- 原理图器件配置参数批量修改
  10. op 消除 消除自激振荡