第10章 オブジェクト指向構文 / 第4回 模擬試験

PHPのクラスのプロパティに関する次の記述のうち、正しいものはどれか。

プロパティには型宣言を付けることができる(例: `public int $age;`)。 正解
プロパティは必ず初期値を指定しなければならない。
プロパティにはアクセス修飾子を付けることができない。
プロパティは、クラス定義後に動的に追加することは一切できない。
解説
PHP 7.4以降、クラスのプロパティには`public int $age;`のように型宣言を付けることができます。 他の選択肢が誤りである理由は次の通りです。 ・プロパティの初期値は任意(省略可能)です。型宣言だけを付けて初期値を省略することもできます。 ・プロパティには`public`, `protected`, `private`のアクセス修飾子を付けることができます(省略時は`public`扱い)。 ・PHPではクラス定義に存在しないプロパティを、インスタンス生成後に動的に追加すること自体は可能です(`$obj->newProp = 'value';`)。ただしPHP 8.2以降はこの「動的プロパティ」の作成に対して非推奨(Deprecated)の警告が出るようになっており、設計上はプロパティをあらかじめ宣言しておくべきとされています。 例: ``` class User { public int $age; // 型宣言のみ、初期値なし private string $name = ''; // 型宣言+初期値+アクセス修飾子 } ``` (参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.1.2節 プロパティ p.475〜477)

あわせて読みたい解説記事