コンストラクラーとデストラクター

クラスとオブジェクト

コンストラクターはクラスがインスタンス化される時に実行されるメソッドのようなものということは前に説明しました。反対にデストラクターとは、インスタンスが破棄される時に実行されます。今回はそれぞれの説明をしていきます。

コンストラクター

コンストラクターはインスタンス化する時に実行されますので、例えばプロパティの初期値を代入したいなどの処理があればコードを記述しておきます。コンストラクターの書き方は以下の通りです。

public function __construct(パラメーター){
   //処理
}

例えば料金を算出するプログラムで初期値に税率を設定したい場合以下のようにします。

<?php
class Calc {
  public $tax;
  public function __construct($tax){
    $this->tax = $tax;
  }

  public function totalCalc($price){
    return $price * (1 + $this->tax);
  }
}
?>

Calcクラスを使って金額を表示しましょう。

<html>
<head>
<meta charset="utf-8">
<title>hello</title>
</head>
<body>
<?php
require_once "Calc.php";
$price = new Calc(0.1);
print "金額は{$price->totalCalc(5000)}円です。";
?>
</body>
</html>

Price.phpで設定した税率で金額を表示することが出来ましたね。

コンストラクターは必ず実行されるものなのですが、設定しなければいけないわけではないです。コンストラクター の記述が無ければ内部的に何もしないコンストラクターが実行されているのです。

また、コンストラクターの例では初期値を設定していますが、初期化とは全く関係のない処理を行っても何ら問題はありません。これから自身でプログラムを作成しクラスを定義する時にコンストラクターを記述する場合に必要な処理を記述しましょう。

デストラクター

デストラクターはインスタンスを破棄する場合に行う処理なのですが、その理由はクラスの中で使用した画像などのリソースを破棄するために使用するのが一般的ですが、PHPではリソースの開放はプログラム終了時に行われるので、あえて使わなければならないということはほとんどありません。
コンストラクターの逆のデストラクターもあるということを覚えるためにさらっと説明しています。

<?php
class Calc {
  public $tax;
  public function __construct($tax){
    $this->tax = $tax;
  }

  public function totalCalc($price){
    return $price * (1 + $this->tax);
  }

 public function __destruct(){
    print 'デストラクター発動!';
  }
}
?>

コメント

タイトルとURLをコピーしました