性能的提升
可以分别通过php5.6和php7,对源码下的zend目录下的bench.php文件和micro_bench.php文件进行测试,会发现php7的执行速度明细的提高。
太空船的操作符
操作符号<=>就很像太空船,该操作符可可以用于快速的比较大小,不过感觉平时用的很少
echo 1 <=> 0; // 1,左边大于右边1
echo 1 <=> 1; // 0,左边等于右边0
echo 1 <=> 2; // -1,左边
标量类型申明
在团队合作的时候,我们经常想要说我们写的方法,需要调用者严格按照我们的规范来调用,避免一些问题,所以就需要对参数进行严格的限制
// 这个必须写,不然如果传入其它类型还是不会报错
declare(strict_types=1);
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$page = $_GET['page'] ?? 1;
null合并运算符
$age = $user->age??0;
类型提示前面带问号
类型前面的问号表示参数或返回值可为空(null)。例如,?string $str
表示 $str
的值可以为 null 或 字符串。
此用法不只局限于静态类型,类和接口也可使用,例如,?MyInterface
// 参数前面?
public function register(?string $mobile = null);
// 返回结果?
public function getPlatformUserAttribute(): ?UserMappingModel
箭头函数
以fn开头,只能一个返回值表达式$post->id
,后面可以带有参数$posts
。
$posts = [/* … */];
$ids = array_map(fn($post) => $post->id, $posts);