0
点赞
收藏
分享

微信扫一扫

php8 新特性

php8 新特性_类型推断

开启JIT

opcache.jit=1205
opcache.jit_buffer_size=64M

JIT触发策略:

0:PHP脚本载入的时候就JIT

1:当函数第一次被执行时JIT

2:在一次运行后,JIT调用次数最多的百分之

(opcache.prof threshold*100)的函数

3:当函数/方法执行超过N(N和opcache.jit hot func相关)次

以后JIT4:当函数方法的注释中含有@jit的时候对它进行JIT5:当一个Trace执行超过N次 (和opcache.jit hot loopjit_hot_return等有关)以后JIT

JIT优化策略,数值越大优化力度越大:

0:不JIT

1:做opline之间的跳转部分的JIT

2:内敛opcode handler调用

3:基于类型推断做函数级别的JIT

4:基于类型推断,过程调用图做函数级别JIT

5:基于类型推断,过程调用图做脚本级别的JIT

可变传参

传参格式变化示例:

function test($name,$age){
echo $name.$age
}
调用参数是 可以指定参数名,顺序可以不固定
test(age:18,name:"testName")
test("testName",18)
以上两种格式函数是一样的

新增条件判断语句match

$a = 100 ;//强类型匹配 值和类型都匹配都正确才能匹配成功
$v =match($a){
100=>"匹配100",
200=>"匹配200",
300,400,500=>"匹配多个值",
default=> "默认值1"
}
echo $v

异常处理错误处理改变

php8中TypeError 和ValueError的改进

内部函数参数强制执行类型和值的验证,如果不允许使用预期的类型或值,则将抛出typeError 或者ValueError异常错误,在php8之前会提示php警告

1TYpeError 触发条件

提供的值不是正确的类型

2ValueError触发条件

提供的值类型正确,但php在上下文中不可接受,会引发ValueError异常

substr("thisisastring",[])

这种写法会提示
php8 提示Fatal error: Uncaught TypeError: substr():
Argument #2 ($offset) must be of type int, array given in

php7.2提示:Warning: substr() expects parameter 2 to be integer, array given in

匿名方法的变体

$fun1 = function(){
return "this is fun()";
}
$fun2 = fn() =>"this is fun()1";

$fun3 = fn($a,$b)=> $a+$b;

echo $fun2();
echo $fun1();
echo $fun3(10,20)

fun1 和fun2功能相同



























举报

相关推荐

0 条评论