PHP で「初期化前に型指定されたプロパティにアクセスしてはなりません」というエラーが表示されるのはなぜですか?
Nov 17, 2024 am 04:32 AMプロパティ タイプ ヒント追加後の「型付きプロパティは初期化前にアクセスしてはなりません」エラー
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 サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7282
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1258
25


PHP チュートリアル
1205
29



LaravelのバックエンドでReactアプリを構築する:パート2、React
