LMLPHP后院

PHP简写三目运算符实现二选一技术

maybe yes 发表于 2015-09-21 00:08

写过 PHP 的人应该知道PHP 中的逻辑运算符与或非计算后返回的值都是布尔值 true 或 false。而在其他的语言中,比如 JavaScriptPython 中,或运算(||) 会返回两者中的一个,是二选一。由于习惯了 JavaScript 的那种或运算的写法,导致一次我在将 Python 业务代码移植到 PHP 中时写出了一个 BUG。

看下面的 JavaScript 代码


var name = obj.name || 'Anonymous';
var callback = obj.callbackFunc || function(){};

在 JS 中,上面的写法非常常见。它和 Python 一样,或运算返回的是二选一。如果要在 PHP 中实现二选一,是不可以那样写的。很久以前也看到过三目运算的简写,之后再也没见到过那种写法,真的太少见,最近一次看到,让我觉得有点陌生。

在 PHP 中,可以使用三目运算符简写的方式实现二选一,如下示例:


$name = $obj->name ?: 'Anonymous';

好的程序员应该写出好的代码,好的代码就应该选择一种最好的方式来写,而不是去写一些很奇怪东西,这样容易造成别人的误解,特别是团队开发

比如,在 PHP 中,我们一般习惯用 isset() 来判断是否有设置值,但有些人会使用 @ 符号来屏蔽报错,其实这样是不规范的,屏蔽 Notice 错误系统架构来讲是不健康的。如下所示:


$name = @$_GET['name'];

上面的代码系不规范的,也是极不提倡的,应该写成下面的方式:


$name = isset($_GET['name']) ? $_GET['name'] : '';

// 等价于 PHP 7 新写法
$name = $_GET['name'] ?? '';

相关文章
2022-07-05 14:50:01 1657003801 0.044313