ホームページ >バックエンド開発 >PHPチュートリアル >PHP 7.4 のプロパティ型ヒントで「型指定されたプロパティが初期化されていません」エラーが発生するのはなぜですか?

PHP 7.4 のプロパティ型ヒントで「型指定されたプロパティが初期化されていません」エラーが発生するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-17 15:56:02621ブラウズ

Why Do I Get a

プロパティ タイプ ヒントで「型付きプロパティが初期化されていません」エラーが発生する理由

PHP 7.4 の新しいプロパティ タイプ ヒントを使用する場合すべてのプロパティに有効な値を指定することが重要です。 null 値とは異なり、未定義のプロパティは宣言された型と一致しません。

たとえば、次のクラスの場合:

class Foo {
    private int $id;
    private ?string $val;
    private DateTimeInterface $createdAt;
    private ?DateTimeInterface $updatedAt;

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

$val に直接アクセスすると、「型指定されたプロパティが初期化されていません」という結果になります。 " 有効な値 (文字列でも null でもない) がないためエラーが発生します。

これを解決するには、初期化時にすべてのプロパティが適切な値であることを確認してください。デフォルト値または構築時の設定値は 2 つのオプションです:

class Foo {
    private int $id;
    private ?string $val = null;
    private DateTimeInterface $createdAt;
    private ?DateTimeInterface $updatedAt;

    public function __construct(int $id) {
        $this->id = $id;
        $this->createdAt = new DateTimeImmutable();
        $this->updatedAt = new DateTimeImmutable();
    }
}

自動生成 ID の場合、推奨されるアプローチはプロパティを null 許容として定義することです:

private ?int $id = null;

未定義のプロパティを覚えておいてくださいnull 値はなく、その値は常に宣言された型と一致する必要があります。初期値またはデフォルト値を指定すると、この初期化エラーを防止し、有効なインスタンスの状態を確保できます。

以上がPHP 7.4 のプロパティ型ヒントで「型指定されたプロパティが初期化されていません」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。