PHP 中的只读类(Readonly Classes)用法讲解
PHP 8.2引入了readonly类的概念,这是一种创建不可变(immutable)对象的方式。
基本概念
只读类是指类的所有属性都是只读的,即在初始化后不能被修改。
readonly class User { public string $name; public int $age; public function __construct(string $name, int $age) { $this->name = $name; $this->age = $age; } }
主要特点
-
所有属性自动变为只读:类中的所有属性都隐式成为readonly属性
-
必须在构造函数中初始化:所有属性必须在构造时赋值
-
不能有可变属性:不能在只读类中声明非只读属性
使用示例
// 创建只读类实例 $user = new User('张三', 25); // 可以读取属性 echo $user->name; // 输出: 张三 // 但不能修改属性 $user->name = '李四'; // 错误: 不能修改只读属性
使用场景
-
值对象(Value Objects):如日期、货币等不应改变的对象
-
数据传输对象(DTOs):在不同层之间传递数据
-
配置对象:初始化后不应更改的配置
注意事项
-
只读类只能包含只读属性
-
不能动态添加属性
-
只读类可以继承其他类,但父类不能是非只读类
-
只读类可以被继承,但子类也必须是只读的
与只读属性的区别
PHP 8.1引入了只读属性,而PHP 8.2扩展了这一概念到整个类:
// PHP 8.1 只读属性 class User { public readonly string $name; public readonly int $age; // ... } // PHP 8.2 只读类(等同于所有属性都是只读的) readonly class User { public string $name; public int $age; // ... }
© 版权声明
1、本站一切资源仅代表作者本人的立场,并不代表本站赞同其观点和对其真实性负责。
2、转载或引用本站版权所有之内容,需注明转载(或引用)CNBOX.NET字样,并表明网址
3、本站所有图片和资源来源于用户上传和网络,仅用作展示,如有侵权请联系站长
THE END
暂无评论