「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」。
PHP 7+ 版本极大地改进了性能,在一些场景下,性能可以达到PHP 5.6的3倍。(PHP也有未来 ps:笑脸)
今天整理一下我在项目中用到的PHP7的新特性
三元运算符的变形
PHP 7 新增加的 NULL 合并运算符(??)是用于执行isset()检测的三元运算的快捷方式。 (注意:是isset()检测,后面会重点说明)
NULL 合并运算符会判断变量是否存在且值不为NULL,如果是,它就会返回自身的值,否则返回它的第二个操作数。
以前我们这样写三元运算符:
$site = isset($_GET['site']) ? $_GET['site'] : '掘金';
现在我们可以直接这样写:
$site = $_GET['site'] ?? '掘金';
小技巧:链式调用
举例:
$site = $_GET['site'] ?? $_POST['site'] ?? '掘金';
注意: 下面的情况?:输出结果是b,而不是false,因为在?:中判断值是否为真,false不为真,所以输出b。
$a = false;
var_dump($a ?? "a"); // 相当于: isset($a) ? $a : 'a' => 输出 false
var_dump($a ?: "b"); // 相当于: $a ? $a : 'a' => 输出 b
常量数组:
在PHP7之前的版本中,我们只能通过const在函数外声明常量,如果在函数内使用const会提示我们:使用 const 关键字定义的常量必须在顶级范围内声明
PHP7+版本中我们可以使用define函数来定义常量数组,比如直接定义数组,常量数组性能更好。
举例:
<?php
// 使用 define 函数来定义数组
define('sites', [
'掘金',
'CSDN',
'极客时间'
]);
print(sites[0]);
?>
//输出结果:掘金
use 语句
PHP 7 可以使用一个 use 从同一个 namespace 中导入类、函数和常量:
PHP 7 之前版本需要使用多次 use
<?php
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;
use function some\namespace\fcn_a;
use function some\namespace\fcn_b;
use function some\namespace\fcn_c;
use const some\namespace\ConstA;
use const some\namespace\ConstB;
use const some\namespace\ConstC;
?>
PHP 7+ 之后版本可以使用一个 use 导入同一个 namespace 的类
use some\namespace\{ClassA, ClassB, ClassC as C};
use function some\namespace\{fcn_a, fcn_b, fcn_c};
use const some\namespace\{ConstA, ConstB, ConstC};
这个新特性能让我们的代码更简洁。
欢迎互动
大家有什么好用的新特性欢迎在评论区讨论
硬核文章推荐
如何第一时间收到接口报错?不用测试妹子再质疑你是不是接口挂了。
Git使用实战:多人协同开发,紧急修复线上bug的Git操作指南。
最后
👍🏻:觉得有收获请点个赞鼓励一下!
🌟:收藏文章,方便回看哦!
💬:评论交流,互相进步!