今まで作成したCarクラスは、オブジェクトを生成後に初期化して使用してもらいました。もし、初期化せずに使用するとどうなるのでしょうか?ガソリンが0リッターなので、加速しても走りません。Carクラスには初期化メソッドが用意されており、Carクラスを利用する側が呼び出しの記述をしないと初期化されません。そこで、オブジェクトを生成した時に初期化をするように調整しましょう。そのようなときに利用できる仕組みが「コンストラクタ」です。
コンストラクタは、クラスからインスタンス生成をする際にプロパティに値を設定するなどの初期設定を行う機能です。インスタンス生成を行う際に呼び出される特別なメソッドを記述します。
コンストラクタ定義の書式 |
---|
アクセス権 function __construct(仮引数リスト){ プロパティの初期化処理など } |
○ ファイル
Carクラスにコンストラクタの記述を追加しましょう。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | Car.php |
○ プログラム
次のようにプログラムを入力してください。
Car.php
○ クラス図
○ 解説
12~15行目でコンストラクタを定義しています。このコンストラクタは引数として設定するガソリン量を受け取り、スピード情報に「0」をセットし、ガソリン量を引数で受け取ったデータでセットします。
42~45行目では、コンストラクタを定義することにより初期化を行うメソッドが不要になりましたので、コメントアウト(削除)しています。
○ ファイル
コンストラクタが用意されたので、インスタンスを生成する記述も変更しましょう。「CapsuleTest.php」ファイルをコピーして、「ConstructTest.php」を作成してください。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | ConstructTest.php |
○ プログラム
次のように修正してください。
ConstructTest.php
○ 実行結果
○ 解説
28行目で、プロパティを初期化するメソッドの呼び出しは廃止されたため、コメントアウトして実行させないようにしました。その代わりに用意されたコンストラクタで初期化をするために23行目では、インスタンス生成時の引数にガソリン量のデータを渡しています。
このように、Carクラスのインスタンス生成の記述をするだけで初期化されるようになります。