Laravel 5.7 展望:在 Blade 模板中使用 null 合并运算符

翻译 Summer ⋅ 于 2周前 ⋅ 525 阅读 ⋅ 原文地址
这是一篇社区协同翻译的文章,已完成翻译,更多信息请点击 协同翻译介绍

file

在下一个主要版本中,Laravel 5.7 移除了 Blade 模板的 "or" 运算符。 Andrew Brown 为 Laravel 5.7 提交了一个 移除 Blade 默认值 的 PR,因为可以使用 PHP 7 的 Null 合并运算符来代替。

虽然距 Laravel 5.7 发布还有几个月的时间,但是使用 PHP 7 的 null 合并运算符 来代替 "or" 运算符是个好主意。

JiaZombie 翻译于 2周前
rayle 审阅

PHP 7 的 Null 合并运算符

PHP7 新引入 null 合并运算符是对 PHP 的一个很好的补充,对你的模板来说也十分有用。 它是一个语法糖,用于代替频繁使用三元运算符与 isset() 结合的情况。

根据 PHP 手册,这里有几个例子说明了它的工作原理:

<?php

// 取得 $_GET['user'] 的值,如果不存在则返回 'nobody'
$username = $_GET['user'] ?? 'nobody';
// 等价于:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// 合并运算可以链在一起: 这里会返回
// $_GET['user'], $_POST['user'],和 'nobody' 中
// 第一个被定义的值
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';

你甚至可以链式调用它们,Blade 模板引擎自带的 "or" 运算符的时代结束了,它们停在了 Laravel 5.6 。

下面的几个例子解释了null 合并运算符的工作原理,使用 PsySH REPL 演示:

$ psysh
>>> true ?? 'Is it true?'
=> true
>>> false ?? 'Is it false?'
=> false
>>> $person->getName() ?? 'Guest'
PHP Notice:  Undefined variable: person on line 1
>>> $person->name ?? 'Guest'
=> "Guest"
JiaZombie 翻译于 2周前

Blade 模板引擎 "or" 运算符的背景

在 null 合并运算符出现以前,Blade 模板引擎使用 "or" 运算符来处理相同的问题,如果第一个值不存在,它允许你设置一个默认值,使用 "or" 分隔,如:

{{ $name or 'Guest' }}

它是这个的简写:

isset($name) ? $name : 'Guest'

Laravel 在 PHP 7 in Laravel 5.5 中增加了对 PHP 要求,因此,如果你使用的是 PHP7 ,那么你在之前的版本中也可以使用 ?? 运算符。然而框架是必须要支持 PHP 5 的。

JiaZombie 翻译于 2周前

现在就更新

由于 Laravel 5.5 要求 PHP 7,所以你可以在今年 Laravel 5.7 发布之前就把 "or" 运算符替换成 null 合并运算符。

JiaZombie 翻译于 2周前

原文地址:https://laravel-news.com/blade-templates...

译文地址:https://laravel-china.org/topics/9407/la...


本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

回复数量: 0
    暂无评论~~

      请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!