前言
没有安装PHP8的,可以参考:CentOS8 编译安装 PHP8.0.8
说明
更少的样板代码来定义并初始化属性。简介
这个特性,其实说白了就是将原先需要两步(先定义属性,然后在构造器内初始化)的操作变成了一步(直接在构造器参数中定义并初始化)。
实例演示
/**
* 今日头条:技术好奇心
*/
// 演示类
class demo
{
public function __construct(
public int $a=3,
public int $b=4
)
{
}
}
// 实例化测试 -- 不传参,检测是否在构造函数内一并定义并初始化了
$obj=new demo();
echo $obj->a.'-'.$obj->b.PHP_EOL;
// 传参测试 -- 正常传参,检测是否能像普通构造函数那样使用
$obj2=new demo(10,11);
echo $obj2->a.'-'.$obj2->b.PHP_EOL;
// 结合"命名参数"测试 -- 检测配合“命名参数”新特性的效果
$obj3=new demo(b:33);
echo $obj3->a.'-'.$obj3->b.PHP_EOL;
运行结果:
从上图可以看出,三个例子全都正常运行了。
命名参数不了解的可以参考:PHP8新特性之命名参数
总结
啧啧,又是一个划水摸鱼的好技巧。