インスタンス生成時のコンストラクタによる初期化について質問させてください。
【前提】
コンストラクタとは、
「クラスからインスタンス化を行った際に
自動的に1回だけ実行される初期化のための関数」
と認識しています。
コンストラクタについては、下記の記事を参考にしました。
https://www.javadrive.jp/php/member/index6.html
上記記事内のコンストラクタによる初期化のサンプルプログラム
php
1$tv1 = new Television(); 2print('現在のチャンネルは'.$tv1->getChannel().'<br>'); 3 4class Television{ 5 private $channelNo; 6 function __construct(){ 7 $this->channelNo = 8; 8 } 9 function getChannel(){ 10 return $this->channelNo; 11 } 12}
その上で、質問させてください。
【質問】
インスタンス化時のプロパティの初期値が毎回同じ値で問題ない場合、
(上記サンプルプログラムで言えば、プロパティの初期値が毎回「$channelNo = 8;」で問題ない場合)
下記プログラムのようにコンストラクタを作るらずに、
プロパティに初期値を直接代入($channelNo = 8;のように代入)してしまえば問題ないのではないか?
と考えてしまっています。
php
1$tv1 = new Television(); 2print('現在のチャンネルは'.$tv1->getChannel().'<br>'); 3 4class Television{ 5 private $channelNo = 8; 6 function getChannel(){ 7 return $this->channelNo; 8 } 9}
しかし、下記サイト内のサンプルプログラムでは、
次のようにコンストラクタを用いて、初期化を行っています。
https://www.javadrive.jp/php/member/index6.html
php
1$tv1 = new Television(); 2print('現在のチャンネルは'.$tv1->getChannel().'<br>'); 3 4class Television{ 5 private $channelNo; 6 function __construct(){ 7 $this->channelNo = 8; 8 } 9 function getChannel(){ 10 return $this->channelNo; 11 } 12}
これは、何かしらの意図があって、コンストラクタによる初期化を行っているのでしょうか?
つまり、インスタンス化時にプロパティの初期値が毎回同じで問題ない場合
(今回のサンプルプログラムでいえば、初期値は「$channelNo = 8;」で問題ない場合)
であったとしても、
プロパティに直接初期値を代入するのではなく、
コンストラクタで初期化を行ったほうが良い理由は、あるのでしょうか?
また、それは、どのような理由なのでしょうか?
ご回答よろしくおねがいします。
【現時点で、考えていること】
現時点で、考えていることは、
コンストラクタを使用することで、
「どこで初期化を行っているかがわかりやすくなる」
です。