前言
没有安装PHP8的,可以参考:
说明
更少的样板代码来定义并初始化属性。
简介
这个特性,其实说白了就是将原先需要 两步 ( 先定义属性,然后在 构造器 内初始化 )的操作变成了 一步 (直接在构造器参数中 定义并初始化 )。
实例演示
<?php
/**
* 今日头条:技术好奇心
*/
// 演示类
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;
运行结果:
从上图可以看出,三个例子全都正常运行了。
命名参数不了解的可以参考:
总结
啧啧,又是一个 划水摸鱼 的好技巧。