このシリーズでは、PHP オブジェクト指向プログラミング (OOP) の基礎について説明します。コンテンツは連続したパートに編成され、それぞれが特定のトピックに焦点を当てます。初心者または OOP の概念に慣れていない場合、このシリーズは段階的にガイドできるように設計されています。 このパートでは、PHP のコンストラクターとデストラクターについて説明します。一緒に PHP OOP を学ぶ旅を始めましょう!
まず、コンストラクターとは何なのかを理解してみましょう。簡単に言えば、コンストラクターは、クラスのオブジェクトの作成時に自動的に呼び出される特別なメソッドです。コンストラクターは、オブジェクトのプロパティを初期化するために使用されます。これはPHPの魔法のメソッドです。しかしここで、コンストラクターについて詳しく理解する必要があります。まずはコードの例を見てみましょう。
class Car { public $name; public $color; public function setValue(string $name, string $color) { $this->name = $name; $this->color = $color; } public function getValue() { echo "Car name: $this->name\n"; echo "Car color: $this->color\n"; } } $toyota = new Car; $toyota->setValue('Toyota', 'Red'); $toyota->getValue();
上記の例または前のセクションでは、メソッドを使用してオブジェクトの値を設定しました。これは Setter メソッドと呼ばれ、クラスのオブジェクトを作成した後、そのオブジェクトのメソッドを使用して値を設定する場合、それを Setter メソッドと呼びます。ただし、PHP に組み込まれているマジック メソッドを使用してこのプロセスを簡素化できます。このメソッドはコンストラクターと呼ばれ、PHP では __construct() を使用して定義されます。次の例を見てみましょう。
class Car { public $name; public $color; function __construct(string $name, string $color) { $this->name = $name; $this->color = $color; } public function getValue() { echo "Car name: $this->name\n"; echo "Car color: $this->color\n"; } } $toyota = new Car('Toyota', 'Red'); $toyota->getValue();
この例では、setValue メソッドを使用する代わりに、__construct() メソッドを使用しています。では、__construct() を使用する利点は何でしょうか?前の例では、Car クラスのオブジェクトを作成した後、setValue メソッドを使用して各車の値を渡す必要がありました。しかし、__construct() を使用することで、オブジェクトの作成時に値を渡すことができるようになり、追加のメソッドを呼び出す必要がなくなりました。
しかし、ここで疑問が生じます。__construct() を呼び出していないのに、どうやって値を受け取り、変数に設定したのでしょうか?
new Car('Toyota', 'Red');
クラス内で __construct() を使用し、そのコンストラクターが外部から値を受け取る場合、クラス オブジェクトの作成時に最初の括弧内に値を渡すことができます。この方法でオブジェクトを作成するとすぐに、__construct() メソッドが自動的に呼び出されます。言い換えれば、クラスのインスタンスを作成するたびに、そのインスタンスが即座に __construct() メソッドを呼び出します。これは、コンストラクターを使用してオブジェクトのプロパティを初期化する方法です。 __construct() はマジック メソッドであるため、明示的に呼び出す必要はありません。特定のタスクを実行するために、特定のシナリオで自動的に実行されます。
デストラクターも PHP のマジック メソッドです。クラスを使用してオブジェクトを作成すると、そのオブジェクトに対してさまざまなタスクを実行します。ただし、タスクが完了すると、オブジェクトが破棄されるときにデストラクターがトリガーされることになります。デストラクターは、PHP で __destruct().
を使用して定義されます。ここで、クラスを使用して複数のオブジェクトを作成した場合、オブジェクトがすべて破棄されると、オブジェクトごとに __destruct() メソッドが呼び出されることに注意することが重要です。つまり、__destruct() メソッドは、そのクラスを使用して作成されたオブジェクトの数だけ呼び出されます。次の例を見てみましょう。
class Car { public $name; public $color; public function setValue(string $name, string $color) { $this->name = $name; $this->color = $color; } public function getValue() { echo "Car name: $this->name\n"; echo "Car color: $this->color\n"; } } $toyota = new Car; $toyota->setValue('Toyota', 'Red'); $toyota->getValue();
このコードを実行すると、次の出力が表示されます。
class Car { public $name; public $color; function __construct(string $name, string $color) { $this->name = $name; $this->color = $color; } public function getValue() { echo "Car name: $this->name\n"; echo "Car color: $this->color\n"; } } $toyota = new Car('Toyota', 'Red'); $toyota->getValue();
さて、どのような場合に __destruct() メソッドを使用すべきか疑問に思われるかもしれません。ファイルやデータベースを操作するときは、それらを開く必要がありますが、タスクが完了したら、ファイルまたはデータベースを閉じる必要があります。このような場合は、__destruct() メソッドを使用できます。さらに、__destruct() メソッドには実際の使用例が数多くあります。
__construct() と __destruct() についてある程度理解できたと思います。これらのメソッドとは別に、PHP には __call()、__callStatic() などの他の重要なマジック メソッドがあります。クラス内のさまざまなシナリオで特定のタスクを実行するため、これらのメソッドも使用できます。
それでは今日はここまでです。次のレッスンでは、別のトピックについて詳しく説明します。乞うご期待!コーディングを楽しんでください!
Linkedin と GitHub で私とつながることができます。
以上がPHP OOP パートコンストラクターとデストラクターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。