随着 PHP 7.4 中属性类型提示的引入,为所有属性,以确保其声明的类型得到尊重。没有分配值的未定义属性无法匹配任何声明的类型并触发错误消息:“初始化之前不得访问类型化属性”。
例如,请考虑以下代码:
class Foo { private string $val; public function __construct(int $id) { $this->id = $id; } public function getVal(): string { return $this->val; } }
构造 Foo 后访问 $val 会导致错误,因为它的类型尚未定义(未定义!== null)。
To解决这个问题,在构造过程中为所有属性赋值或为它们设置默认值:
class Foo { private string $val = null; // default null value public function __construct(int $id) { $this->id = $id; } }
现在,所有属性都有有效值,消除了错误。
当依赖于实体属性的数据库值,例如自动生成的 ID 或时间戳。对于自动生成的 ID,将它们声明为可空:
private ?int $id = null;
对于所有其他 ID,选择与其类型匹配的适当默认值。
以上是如何修复 PHP 中的'初始化之前不得访问类型化属性”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!