指定参数 返回值类型
强制模式(默认)
严格模式(declare(strict_types=1); )
<?php
// 强制模式
function sum(int ...$ints)
{
return array_sum($ints);
}
print(sum(2, '3', 4.1));
?>
返回值为9
<?php
// 严格模式
declare(strict_types=1);
function sum(int ...$ints)
{
return array_sum($ints);
}
print(sum(2, '3', 4.1));
?>
报错
zval 结构的变化
变量的引用计数只记录在自身
引入 Throwable 接口
错误及异常都实现了 Throwable,无法直接实现 Throwable,但可以扩展 \Exception 和 \Error 类。可以用 Throwable 捕捉异常跟错误。\Exception 是所有PHP及用户异常的基类;\Error 是所有内部PHP错误的基类。
intdiv() 函数
intdiv(a, b) == a除以b,然后取整
<?php
echo intdiv(9,3),PHP_EOL; // 3
echo intdiv(10,3),PHP_EOL; // 3
echo intdiv(5,10),PHP_EOL; // 0
?>
常量数组
<?php
// 使用 define 函数来定义数组
define('sites', [
'Google',
'Runoob',
'Taobao'
]);
print(sites[1]);
?>
合并运算符(??,?:)
NULL 合并运算符(??)会判断变量是否存在且值不为NULL,如果是,它就会返回自身的值,否则返回它的第二个操作数。
a) ? a未定义时a)不会
$a = 10;
var_dump($a ?? "a"); // 相当于: isset($a) ? $a : 'a' => 输出 10
var_dump($a ?: "b"); // 相当于: $a ? $a : 'a' =>输出 10
use
同一个命名空间引入不同函数、对象时,可以用{}
use some\namespace\{ClassA, ClassB, ClassC as C};
太空船运算符
用于比较两个表达式 b,如果 b时,它分别返回-1、0或1。
b
支持数组内解包 – 数组扩展Spread运算符(php7.4)
$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
var_dump($fruits);
相当于array_merge但是更快
箭头函数 2.0 (简短闭包php7.4)
function cube($n){
return ($n * $n * $n);
}
$a = [1, 2, 3, 4, 5];
$b = array_map('cube', $a);
print_r($b);
$a = [1, 2, 3, 4, 5];
$b = array_map(fn($n) => $n * $n * $n, $a);
print_r($b);
网友评论