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

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

DDD
发布: 2024-11-20 04:52:02
原创
360 人浏览过

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

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