ホームページ >バックエンド開発 >PHPチュートリアル >PHP が「初期化前に型指定されたプロパティにアクセスしてはなりません」をスローするのはなぜですか?
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 にアクセスしようとしています。
Fatal error: Typed property Foo::$val must not be accessed before initialization
これを解決するには、デフォルト値として、または構築中に、宣言された型に一致する値を割り当てます。例:
class Foo { private int $id; private ?string $val = null; private ?DateTimeInterface $updatedAt; public function __construct(int $id) { $this->id = $id; $this->createdAt = new DateTimeImmutable(); $this->updatedAt = new DateTimeImmutable(); } }
これにより、すべてのプロパティが有効な値を持つことが保証され、エラーが排除されます。
ID などの自動生成値を扱う場合、プロパティを private ?int $id = として宣言します。 null を推奨します。特定の割り当てがないその他のプロパティの場合は、そのタイプに基づいて適切なデフォルト値を選択します。
以上がPHP が「初期化前に型指定されたプロパティにアクセスしてはなりません」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。