Laravel 5.4 正式发布

转自 Laravel 资讯:https://news.laravel-china.org/posts/539

Laravel Dusk

当编写接口测试时,Laravel 提供了一组有用的帮助方法,用来方便地单击链接,填充表单文件或提交表单。Laravel 使用 Symfony BrowserKit 组件来模拟 Web 浏览器的行为。但是,如果应用程序使用 JavaScript 和 AJAX 来加载页面,就没 BrowserKit 啥事了。

Laravel 5.4 将引入 Laravel Dusk 这一新工具,来解决这个问题。

Dusk 能模拟浏览器的运行环境。它的目的是提供正确的方式进行页面交互测试,所以可以使用 Dusk 去点击按钮或者链接、填写表单、甚至拖放。

Dusk 利用 ChromeDriver 和 Facebook PHP-webdriver 进行接口测试。它作用于任何 Selenium 浏览器,而它自带的 ChromeDriver 默认情况下会根据你安装的方式(JDK 或 Selenium)进行保存。这使得 Dusk 很容易使用,而不需要经历设置 Selenium 和每次启动服务器这些艰难的过程。此外,Taylor Otwell 提到 Dusk 测试运行比 Selenium 更快。

@JokerLinly 的文章 Laravel Dusk 又是啥?反正 Laravel 5.4 又能更好玩了

Laravel Mix

Laravel Mix 是 Elixir 的升级版,全新的 Mix 使用 Webpack 构建,而不是之前的 Gulp。此次因底层架构改变较大而重命名。

除非你对 Elixir 做了很多自定义设置,否则迁移应该不用费很大的劲,可以查看 Laracasts 对升级工具的介绍。

Blade Components 和 Slots

Laravel Blade 在 5.4 中加入 Components 和 Slots 两个新的特性。 这个功能受到 Vue.js 的启发,能够将 HTML 元素简化为可重用区域。举个例子,假设你想在主页上添加一个 alert 框。

// alert.blade.php
<div class="alert">
    {{ $slot }}
</div>

在模板里你可以这样加载:

@component('inc.alert')
    This is the alert message here.
@endcomponent

@JokerLinly 的文章 Laravel 在 5.4 中为 Blade 模板引擎增加新成员 —— Components & Slots

支持 Markdown 语法的 Emails

Laravel 5.3 引进了两个与电子邮件有关的新功能 Mailables 和 Notifications,能够让你通过电子邮件、短信和其他渠道发送相同的消息。

建立在这些改进的基础之上,Laravel 5.4 将引入一个全新的 Markdown 系统来创建电子邮件模板。

此功能实现了 Parsedown 解析器以及 Markdown Extra,这样就可以在邮件中发送表格了。

@component('mail:message')

# Thank You

Thank you for purchasing from our store. 

@component('mail::button', ['url' => $actionUrl, 'color' => $color])
{{ $actionText }}
@endcomponent

@endcomponent

@JokerLinly 的文章 在 Laravel 5.4 中你将可以使用 Markdown 语法书写邮件

自动化 Facades

现在你可以实时地使用 Facade 对任何类进行加载。下面是个例子:

namespace App;

class Zonda 
{
    public function zurf()
    {
        return ‘Zurfing’;
    }
}

这样在你的控制器或者路由里:

use Facades\ {
    App\Zonda
};

Route::get('/', function () {
    return Zonda::zurf();
});

@milkmeowo 的文章 [Laravel 5.4] 新功能: 实时 Facade

路由优化

随着 Laravel 5.4 开发 的持续,路由方面将会有两个新的改进,为大型应用程序而生的更好路 (bu) 由 (ming) 缓 (jue) 存 (li) 和更加一目了然的路由注册方式。

Route::name('profile')->get('user/{id}/profile', function ($id) {
    // some closure action...
});

Route::name('users.index')->middleware('auth')->get('users', function () {
    // some closure action...
});

Route::middleware('auth')->prefix('api')->group(function () {
    // register some routes...
});

Route::middleware('auth')->resource('photo', 'PhotoController');

路由缓存层的改进会让那些定义了超过一千条路由的大型应用看到希望的曙光。

@JokerLinly 的文章 哎哟!Laravel 5.4 又改进路由啦!

集合增加高阶信息传递(HOM)支持

对此功能最好的解释就是使用例子。假如你相对集合里的每一个元素进行操作:

$invoices->each(function($invoice) {
    $invoice->pay();
});

以上是老的写法,5.4 里你可以这样写:

$invoices->each->pay();

@milkmeowo 同学对此功能做了详细的介绍,请前往查看 博客:[Laravel 5.4] 集合增加高阶信息传递(HOM)支持

更多新功能

以下是不完全列表

  • 新增辅助函数 retry
  • 新增辅助函数 array_wrap
  • 新增默认 503 页面
  • 整个核心加载类时重构为 ::class 调用
  • 增加密码重置的路由命名
  • 支持 PhpRedis
  • 增加 IPv4 和 IPv6 验证
  • date_format 的验证现在更加准确

升级到 Laravel 5.4

官方文档包含了升级指南。以下是你重点需要注意的。

Laravel Tinker 现在是独立的扩展包,你需要:

composer require laravel/tinker

安装完成后修改 config/app.php 增加:

Laravel\Tinker\TinkerServiceProvider

你原本的测试如果使用了 browser kit 的话,可以选择升级到 Laravel Dusk 或者加载原有的扩展包:

composer require laravel/browser-kit-testing --dev

最后你需要修改 composer.json 文件把 laravel/framework 指向 5.4.*

Laravel 5.4 更多链接:

关于 5.4 的翻译

我们计划春节假期的最后几天开始翻译,届时欢迎大家一起来参与 ?

摈弃世俗浮躁,追求技术精湛
本帖已被设为精华帖!
Summer
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 20
幽弥狂

使用composer 安装报错。。。

7年前 评论

手滑 点了下 举报。

7年前 评论
幽弥狂

@tanjibo 我已经试了,,,果然如此

7年前 评论

@xhh110 不要使用国内composer镜像

7年前 评论

@lpxzz 如何设置composer的官方镜像?

7年前 评论

@江政昊 如果没有添加国内镜像默认就是官方

7年前 评论
Skipped installation of bin bin/psysh for package psy/psysh: file not found in package

安装laralvel 5.4 出现这样的错误

7年前 评论

@lpxzz 因为设置了国内镜像,才想设置回官方的。

7年前 评论
Chris1010

@江政昊

设置国内镜像

"repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" }

不想设置国内镜像

composer.json 文件删除这个 repositories json 选项

7年前 评论

@谭重涛 非常感谢!

7年前 评论

@tanjibo 这是彩蛋 :smile:

7年前 评论
soli

刚才 composer update 了一下:

Updating laravel/framework (v5.4.0 => v5.4.2) Downloading: 100%

这么快?

7年前 评论
soli

好吧。。。。

 Updating laravel/framework (v5.4.2 => v5.4.3) Downloading: 100%

看来官方现在是疯狂打补丁中哈。

碎觉,希望明天会消停点儿。

7年前 评论
幽弥狂

@lpxzz 我还是继续用5.3吧。。。。5.4的补丁应该还没打完

7年前 评论
Ysll

开心的我:kissing:

7年前 评论
jasonchang

@Summer 希望专栏部分,加入草稿功能。

7年前 评论

弱弱的问一句:你们做开发都写测试么?

7年前 评论
Summer

@genyii 有些时候写,有些时候不写

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!