※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

前回記事、PHPでオブジェクト指向入門4~コンストラクタ~では、インスタンス化されたタイミングでオブジェクトに対して引数を加えて初期化するという コンストラクトについて学びました。今回はそのオブジェクトを破棄するデストラクトについて記述していきます。 9月19日記事

目次





ちゃんと掃除をしよう

コンクラスタの反対で、オブジェクトを破棄するために使われます。 クラスを定義して利用したら、当然メモリが確保されます。メモリ不足にならないように、クラスで定義したオブジェクトを破棄することを 明示的にしたい場合 があります。 そんな記事について書いていきたいと思います。ぶっちゃけて言えば、そんなに使わないです。

コード

クラス名はなんでもよかったのですが、destructの勉強なので、Obj_Destructにしました。

classを定義したファイル(Obj_Destruct.phpの方)

<?php
class Obj_Destruct{
	public $a;
	public $b;
	
	public function __construct($a,$b){
		$this->a = $a;
		$this->b = $b;
		
	}
	public function __destruct(){
		print '<p>'.__CLASS__.'オブジェクトは破棄された。</p>';
	}
	public function Show() {
    	print "メンバ変数として、{$this->a}と{$this->b}が登録されています。";
  	
  }
}

呼び出す方(index.phpの方)

<?php

require_once ('../class/Obj_Destruct.php');

$o = new Obj_Destruct(1,"moji");
//echo __CLASS__;と書いても表示はされません。
$o->Show();



クラスまたはメソッドが実行中か実行されていないかはPHPの定義済み定数、__CLASS__や__METHOD__で確認ができます。使い方はPHPの定義済み定数をご参照ください。

まとめ

あまり使わないですが、破棄されるタイミングで他に何かしたい場合に使われます。 次はPHPでオブジェクト指向入門6~静的メソッド~です。

以上