首页 > 后端开发 > php教程 > 为什么我在 PHP 7.4 属性类型提示中收到'类型化属性未初始化”错误?

为什么我在 PHP 7.4 属性类型提示中收到'类型化属性未初始化”错误?

Patricia Arquette
发布: 2024-11-17 15:56:02
原创
616 人浏览过

Why Do I Get a

为什么您可能会遇到属性类型提示的“类型化属性未初始化”错误

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板