PHP アドバンス

PHP OOP - デストラクタ

1. PHPの __destruct() 関数

PHPの __destruct() 関数は、オブジェクトが破棄される際、あるいはスクリプトの実行が終了した際に自動的に呼び出されるクラス内の特殊なメソッドです。

この __destruct() 関数は、PHPの __construct() 関数とは対照的な役割を担います。__destruct() 関数を定義しておくと、PHPはスクリプトの終了時にこの関数を自動的に実行します。

       注意:__destruct() 関数は、2つのアンダースコア (__) で始まることに注意してください。

以下の例では、クラスからオブジェクトを作成した際に自動的に呼び出される __construct() 関数と、スクリプトの最後に自動的に呼び出される __destruct() 関数を組み合わせています。

1.1 デストラクタの実装例

以下のコードは、オブジェクトのライフサイクルにおけるデストラクタの挙動を示しています。

<?php
class Fruit {
  public $name;
  public $color;

  // オブジェクト作成時に実行されるコンストラクタ
  function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }

  // スクリプト終了時、またはオブジェクト破棄時に実行されるデストラクタ
  function __destruct() {
    echo "名前: " . $this->name . "。色: " . $this->color . "。<br>";
  }
}

$apple = new Fruit('りんご', '赤');
$banana = new Fruit('バナナ', '黄色');
?>

2. 実装のポイント

コンストラクタとデストラクタを適切に活用することで、ボイラープレート(定型的なコード)の記述量を大幅に削減できます。これらは、リソースの初期化やクリーンアップ処理を自動化する上で非常に強力なツールとなります。