文档章节

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

hosser
 hosser
发布于 2016/08/15 14:52
字数 511
阅读 203
收藏 1

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)查看评论

本文转载自:http://blog.lmlphp.com/archives/145/Shorthand_TRINOCULAR_operators_in_PHP_to_realize_a_second_electi

hosser
粉丝 192
博文 78
码字总数 4614
作品 3
徐汇
私信 提问
swift官方推荐翻译文档之基本运算符

运算符是检查、改变、合并值的特殊符号或短语。例如,加号将两个数相加(如)。更复杂的运算例子包括逻辑与运算符(如),或让 i 值加1的便捷自增运算符等。 Swift 支持大部分标准 C 语言的运...

哪一种黑
2016/03/10
12
1
linux-python基本数据类型

一、变量 - 变量是内存中的一块区域。 - 变量的命名: 变量名由字母,数字,下划线组成。 整型 浮点型 • 1.2e10代表的数值为1.2的10次方; • 12e9代表的数值为12的9次方; 3.长整形 4.复数类型 ...

huanzi2017
2017/12/25
0
1
JavaScript 开发人员需要知道的简写技巧

原文出处: Michael Wanyoike 译文出处:葡萄城控件 本文来源于多年的 JavaScript 编码技术经验,适合所有正在使用 JavaScript 编程的开发人员阅读。 本文的目的在于帮助大家更加熟练的运用 ...

新生大学
2017/10/30
0
0
自动拆箱导致空指针异常

一、三目运算符 对于条件表达式b?x:y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式从不会既计算x,又计算...

有事没事
2016/10/09
50
0
JavaScript 开发人员需要知道的简写技巧

本文来源于多年的 JavaScript 编码技术经验,适合所有正在使用 JavaScript 编程的开发人员阅读。 本文的目的在于帮助大家更加熟练的运用 JavaScript 语言来进行开发工作。 文章将分成初级篇和...

powertoolsteam
2017/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
11
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部