”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何修复 PHP 中的“初始化之前不得访问类型化属性”错误?

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

发布于2024-12-23
浏览:696

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 会导致错误,因为其类型尚未定义 (undefined !== null)。

要解决此问题,请在构造或为其设置默认值:

class Foo {
    private string $val = null;  // default null value

    public function __construct(int $id) {
        $this->id = $id;
    }
}

现在,所有属性都有有效值,从而消除了错误。

当实体属性依赖数据库值(例如自动生成的 ID 或时间戳)时,也会出现此问题。对于自动生成的 ID,将它们声明为可空:

private ?int $id = null;

对于所有其他 ID,选择与其类型匹配的适当默认值。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3