PHP 7 中的一些小技巧,你知道的有哪些
PHP 7 显著提高了整体性能。实际上主要的特性有 null 合并运算符或返回类型声明。如果你不知道它们,那么你应该去查看 PHP 文档。
这里有一些很少人知道的、可能有用的特性。
相同的命名空间,相同的 use
在 PHP 7 之前,开发者经常这么做:
use Universe\Saiyan;
use Universe\SuperSaiyan;
从 PHP 7 开始:
use Universe\{Saiyan, SuperSaiyan};
函数和常量也是一样的。如果它们属于同一命名空间,则可以对它们进行分组。
常量可以是数组
define('NAMES', [
'first' => 'John',
'middle' => 'Fitzgerald',
'last' => 'Kennedy'
]);
echo NAMES['last']; //显示 "Kennedy"
太空船操作符
它的写法是这样的 <=>。它结合了比较。它表示 “小于,等于或大于”。当使用用户定义的比价函数对数组进行排序时,它非常有用,因为返回值是:
- 0 如果值相等
- 1 如果左边的值更大
- -1 如果右边的值更大
那么,让我们对以下女演员进行排序:
$actressesWithAcademyAwards = [
[ 'name' => 'Katharine Hepburn', 'awards' => 4 ],
[ 'name' => 'Jessica Lange', 'awards' => 2 ],
[ 'name' => 'Meryl Streep', 'awards' => 3 ],
[ 'name' => 'Cate Blanchett', 'awards' => 2 ],
];
你可以用一行来代替多行来进行比较:
usort($actressesWithAcademyAwards, function ($a, $b) {
return $a['awards'] <=> $b['awards'];
});
print_r($actressesWithAcademyAwards);
返回:
Array
(
[0] => Array
(
[name] => Jessica Lange
[awards] => 2
) [1] => Array
(
[name] => Cate Blanchett
[awards] => 2
) [2] => Array
(
[name] => Meryl Streep
[awards] => 3
) [3] => Array
(
[name] => Katharine Hepburn
[awards] => 4
)
)
这是一个非常常见的 PHP 用例,因此太空船操作符可以节省时间。另外,它的可读性更强。
数组的第一 / 最后一个键 (PHP 7.3)
从 PHP 7.3 开始,你可以很容易地得到数组的第一个键和最后一个键:
$array = [ 'v' => 1, 'i' => 2, 'p' => 3 ]; $firstKey = array_key_first($array);
$lastKey = array_key_last($array); print_r($firstKey); // v
print_r($lastKey); // p
真的很简单,因为它不影响内部数组指针。
数组延展操作符 (PHP 7.4)
该特性可以实现以下功能:
$abc = range('a', 'c');
$def = range('d', 'f');
$ghi = range('g', 'i');
$all = [...$abc, ...$def, ...$ghi, 'j'];
print_r($all);
得到:
Array
(
[0] => a
[1] => b
[2] => c
[3] => d
[4] => e
[5] => f
[6] => g
[7] => h
[8] => i
[9] => j
)
在大多数情况下,它基本取代了 array_merge() .
在大多数情况下,它基本取代了 array_merge() .
箭头函数 (PHP 7.4)
请注意,因为现在它指的是只有一个表达式的短闭包(因此有了 “短” 这个字):
$c = 3;
$addC = fn($x) => $x + $c;
echo $addC(70); // 73
不需要 use 关键字。
常量的可见性 (PHP7.1)
class Mother {
private const ERROR_LEVEL_1 = 'achtung';
}
可见性有助于确保不应该被覆盖的内容不会被覆盖。在 PHP 7.1 之前,对于类常量(始终是公共的)来说是不可能的。
Constant visibility (PHP7.1)
class Mother {
private const ERROR_LEVEL_1 = 'achtung';
}
可见性有助于确保不应被覆盖的内容不被覆盖。在PHP 7.1之前,对于类常量(始终是公共的)这是不可能的。
结语
PHP 7 是强大的。它速度更快,功能更强大。你知道 PHP 7 可以完成这些事吗?
更多内容请访问
八重樱:怎么从一名码农成为架构师的必看知识点:目录大全(持续更新)50W年薪挑战!
PHP 7 中的一些小技巧,你知道的有哪些的更多相关文章
- ACM 做题过程中的一些小技巧。
ACM做题过程中的一些小技巧. 1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 2.有时候int型不够用,可以用long l ...
- C语言中的调试小技巧
C语言中的调试小技巧 经常看到有人介绍一些IDE或者像gdb这样的调试器的很高级的调试功能,也听人说过有些牛人做工程的时候就用printf来调试,不用特殊的调试器.特别是在代码经过编译器一些比较复杂的 ...
- jquery获取json对象中的key小技巧
jquery获取json对象中的key小技巧 比如有一个json var json = {"name" : "Tom", "age" : 1 ...
- ES6中常用的小技巧,用了事半功倍哦
ES6中常用的小技巧,如果能在实际项目中能使用到,必定事半功倍: 1. 强制要求参数 ES6提供了默认参数值机制,允许你为参数设置默认值,防止在函数被调用时没有传入这些参数. 在下面的例子中,我们写了 ...
- C#中使用swagger小技巧
C#中使用swagger小技巧 swaggerUI显示的接口内容主要用于开发阶段便于与前端联调,不适合发布到对外的站点. 有以下两种方式,让接口不显示在SwaggerUI中 1.使用属性 [ApiEx ...
- asp.net mvc route 中新发现的小技巧
在发现这个小技巧之前,我经常被某些问题困扰,我们以博客园为例 1:是分类名称 2:是分类url 3:点击分类,进入的页面,要显示分类的名称 4:点击分类,进入的页面,要用分类相关参数 在日常web的开 ...
- RS开发中的一些小技巧[不定期更新]
从9月份一直忙到了现在,项目整体的改版工作也完成了十有八九了,有些事情只有你自己真正的做了,你才能明白:哦,原来还可以这个样子,这样做真的好了很多呢,接下来我就分享一些最近遇到的RS开发的一些小技巧, ...
- CSS中的一下小技巧2之CSS3动画勾选运用
使用CSS3实现动画勾选 相信大家在项目中会经常遇到这种需求:勾选框.现在用CSS3来实现一个动画勾选,只需要一个标签即可完成: 这次需要用到CSS中伪类 after,这个小技巧也是很容易忘记的,所以 ...
- CSS中的一下小技巧1之CSS3三角形运用
使用CSS3实现三角形: 在前端页面中有很多时候会遇到需要三角形图案的时候,以前不知道可以用CSS3实现三角形的时候,一般都是叫UI把三角形图案切出来. 后来知道原来可以用CSS3实现三角形,可是用过 ...
- Python 中的一些小技巧
这里是本人收集的一些 Python 小技巧,目前主要是一些实用函数,适合有一定基础的童鞋观看(不会专门介绍使用到的标准库函数).. 一.函数式编程 函数式编程用来处理数据,感觉很方便.(要是再配上管道 ...
随机推荐
- Nginx笔记总结十六:nginx优化指南
1.高层的配置 worker_processes 定义了nginx对外提供web服务时的worker进程数 worker_rlimit_nofile 更改worker进程最大打开文件数量限制,如果没有 ...
- 从又一家外卖被Uber收购,看美团打车未来
别以为Uber在中国失利,连优步中国都被滴滴收购了,就认为Uber已经不行了.其实从全球范围内来看,Uber还是相当强势的--创始人的那些破事儿不算在内.此外,更重要的是Uber已经不单单是在打车业务 ...
- Leetcode 063 不同路径二
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为" ...
- Ubuntu18.04安装Fabric
本文介绍如何在Ubuntu18.04中搭建Fabric1.4实验环境,默认使用root用户. 1.安装Golang 首先下载Golang安装包,安装包可以从这里下载.这里下载的是go1.13.4.li ...
- 添砖加瓦:Linux系统监测
前言 前段时间因为项目需求,需要实时获取系统当前的运行状态,遂查阅了不少资料,基于/proc目录下的部分文件,实现了系统CPU.内存.网络和磁盘的实时监测. 一.CPU使用情况获取 获取CPU使用情况 ...
- 杂记:OSX下编译安装最新版RedisDesktopMmanager
之前使用Redis数据库时因为操作简单,一直使用的是“redis-cli”连接Redis:后来因为数据展示的不是很直观,所以开始使用带有图形界面的Redis客户端:RedisDesktopMmanag ...
- marquee上下无缝滚动
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name=&qu ...
- MQ消息丢了怎么破?在线等.....
MQ又丢消息了,老板眉头一紧............ 在我们从事技术的工作中,离不开中间件,mq就是常见的中间件之一,丢消息可能是我们经常遇到的,为啥会丢?丢了怎么破?测试能不能复现,很多同学知道一些 ...
- Java大浮点数精度
BigDecimal 精度问题 BigDecimal舍入模式 ROUND_DOWN 向零舍入. 即1.55 变为 1.5 , -1.55 变为-1.5 ROUND_UP 向远离0的方向舍入 即 1.5 ...
- 沙雕与大婶 | Mock调你的外部依赖吧
故事背景: 沙雕在公司负责API项目的开发,很认真负责,经常加班加点赶进度,却常常被老板吐槽说他开发效率太低,他自己也很委屈,因为他所负责的项目常常依赖大量外部系统,他只好等对方开发完才一个个对接,开 ...