随着 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