PHP クラスにプロパティ タイプ ヒントを導入すると、次のようなエラーが発生する場合があります。 , 「初期化前に型指定されたプロパティにアクセスしてはなりません。」このエラーは、宣言された型と一致する有効な値でプロパティが初期化される前にプロパティにアクセスすると発生します。
PHP 7.4 のプロパティのタイプヒントによれば、すべてのプロパティには次のプロパティが必要です。宣言された型と一致する値。未割り当てのプロパティは未定義の状態にあり、宣言された型 (null であっても) に一致しません。
次のコードを考えてみましょう。
class Foo { private int $id; private ?string $val; private DateTimeInterface $createdAt; private ?DateTimeInterface $updatedAt; // Getters and setters omitted for brevity... } $f = new Foo(1); $f->getVal(); // Error: Typed property Foo::$val must not be accessed before initialization
この例では、文字列または null 値を割り当てずに $val プロパティにアクセスすると、最初にエラー。
デフォルト値:
宣言時にプロパティにデフォルト値を割り当てることができます:
class Foo { private ?string $val = null; // Default null value for optional property }
コンストラクター初期化:
コンストラクター内のプロパティの初期化:
class Foo { public function __construct(int $id) { // Assign values to all properties $this->id = $id; $this->createdAt = new DateTimeImmutable(); $this->updatedAt = new DateTimeImmutable(); } }
Null 許容型:
オプションのプロパティの場合は、Null 許容として宣言します。
private ?int $id;
DB が生成されました値 (自動生成された ID):
データベースによって初期化されるプロパティには null 許容型を使用します:
private ?int $id = null;
以上がPHP で「初期化前に型指定されたプロパティにアクセスしてはなりません」というエラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。