PHP7+ 必知必会的新特性
「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」。
PHP 7+ 版本极大地改进了性能,在一些场景下,性能可以达到PHP 5.6的3倍。(PHP也有未来 ps:笑脸)
今天整理一下我在项目中用到的PHP7的新特性
三元运算符的变形
PHP 7 新增加的 NULL 合并运算符(??)是用于执行isset()检测的三元运算的快捷方式。 (注意:是isset()检测,后面会重点说明)
NULL 合并运算符会判断变量是否存在且值不为NULL,如果是,它就会返回自身的值,否则返回它的第二个操作数。
以前我们这样写三元运算符:
ini
$site = isset($_GET['site']) ? $_GET['site'] : '掘金';现在我们可以直接这样写:
ini
$site = $_GET['site'] ?? '掘金';小技巧:链式调用
举例:
ini
$site = $_GET['site'] ?? $_POST['site'] ?? '掘金';注意: 下面的情况?:输出结果是b,而不是false,因为在?:中判断值是否为真,false不为真,所以输出b。
ruby
$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
<?php // 使用 define 函数来定义数组 define('sites', [ '掘金', 'CSDN', '极客时间' ]); print(sites[0]); ?> //输出结果:掘金use 语句
PHP 7 可以使用一个 use 从同一个 namespace 中导入类、函数和常量:
PHP 7 之前版本需要使用多次 use
php
<?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 的类
php
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操作指南。
最后
👍🏻:觉得有收获请点个赞鼓励一下!
🌟:收藏文章,方便回看哦!
💬:评论交流,互相进步!
