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

2016/08/15 14:52
阅读数 966

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

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

原文链接 : http://blog.lmlphp.com/archives/145/Shorthand_TRINOCULAR_operators_in_PHP_to_realize_a_second_election_alternative  来自 : LMLPHP后院

写 过 PHP 的人应该都知道,PHP 中的逻辑运算符与或非计算后返回的值都是布尔值 true 或 false。而在其他的语言中,比如 JavaScript 和 Python 中,或运算(||) 会返回两者中的一个,是二选一。由于习惯了 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'] ?? '';

阅(910)评(0)查看评论

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部