首页  >  文章  >  后端开发  >  如何修复 PHP 中的'初始化之前不得访问类型化属性”错误?

如何修复 PHP 中的'初始化之前不得访问类型化属性”错误?

DDD
DDD原创
2024-11-20 04:52:02305浏览

How to Fix the

理解“初始化之前不得访问类型化属性”错误

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn