为什么您可能会遇到属性类型提示的“类型化属性未初始化”错误
在 PHP 7.4 中使用新的属性类型提示时,为所有属性提供有效值至关重要。与空值不同,未定义的属性不匹配任何声明的类型。
例如,使用以下类:
class Foo { private int $id; private ?string $val; private DateTimeInterface $createdAt; private ?DateTimeInterface $updatedAt; public function __construct(int $id) { $this->id = $id; } }
直接访问 $val 将导致“类型化属性未初始化” " 错误,因为它没有有效值(既不是字符串也不是 null)。
要解决此问题,请确保所有属性在初始化时都具有适当的值。默认值或构造期间的设置值有两个选项:
class Foo { private int $id; private ?string $val = null; private DateTimeInterface $createdAt; private ?DateTimeInterface $updatedAt; public function __construct(int $id) { $this->id = $id; $this->createdAt = new DateTimeImmutable(); $this->updatedAt = new DateTimeImmutable(); } }
对于自动生成的 ID,建议的方法是将属性定义为可空:
private ?int $id = null;
记住,未定义的属性没有 null 值,并且它们的值必须始终与其声明的类型匹配。通过提供初始值或默认值,您可以防止此初始化错误并确保有效的实例状态。
以上是为什么我在 PHP 7.4 属性类型提示中收到'类型化属性未初始化”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!