__construct
に直接電話しないでください。コンストラクタで何かが発生する必要があるが、結果としてオブジェクトを作成したくない場合は、static
メソッドを使用します。
class Thing{
public static function talk(){echo "I talk";}
}
Thing::talk(); // 'I talk'
静的メソッドは、クラスのオブジェクトインスタンスを必要とせずに呼び出すことができます。
__construct
は、Magic Methodsと呼ばれるPHPの特別なグループのメソッドの一部です。これらを直接呼び出すことはありませんが、何らかのイベントが発生したときにPHPが呼び出すようにします。例えば、クラス上でnew
を呼び出すと、__construct
が実行されます。
もう一つの例:あなたが存在しないプロパティを取得しようとした場合(見つかった場合)、__get
が実行されます。
Class Thing{
public property $name = 'Berry';
public function __get($propertyName){
return "$propertyName does not exist!";
}
}
$t = new Thing();
echo $t->name; // 'Berry'
echo $t->weight; // 'weight does not exist!';
明らかに私は初心者レベルでOOPを学んでいます:) –
いいえ。コンストラクタを実行するには、クラスのインスタンスを作成する必要があります。 – Rizier123
質問を提起....なぜあなたはしたいですか?コンストラクタの全体的なポイントは、クラスをインスタンス化するときに自動的に実行されるコードだということです。 –