[PHP-users 21962]Re: オブジェクトに、自分自身を削除するメソッドを実装する方法について

T.Okabe okabe @ nsd.jip.co.jp
2004年 6月 3日 (木) 13:45:30 JST


岡部といいます。

まぁ、PEARのデストラクタは、仕様に従ってコーディングすれば
register_shutdown_functionを利用して実行されるようにしてあげるよ、
というものなので、気分的にはガーベジとあまり変わらないという話も。
ただし、セッションへのオブジェクト保存などの場合には
スクリプト終了時におけるデストラクトが欲しい場合があるので、
PEARのはそっち向きには便利ではないかと。

>話は変わりますが、これでPearのデストラクタを用いなくても、デストラクタの
>ような機構(ガベージコレクタではなく、後処理やDB処理など)を
>簡単に組み込む事が出来ますね。
>
>class A {
>  function destructor(){
>    /* 何か定義しておく(下位クラスで別々の定義をオーバーライドしても可) 
*/
>  }
>  function destroy(){
>    $this->destructor();
>     $this = NULL;
>  }
>}
>
>で class A (若しくはそれを継承したクラス)のインスタンス消去時に
>destroy()メソッドを実行すれば、先だってdestructor()メソッドも実行され、
>何かと便利そうです。

ちなみに、以下で良いのではないかと。

class A {
  function destructor(){
    /* 何か定義しておく(下位クラスで別々の定義をオーバーライドしても可) /
    $this = NULL;
  }
}
class B extends A {
  function destructor(){
    /* 拡張実装 */
    parent::destructor();
  }
}
  


PHP-users メーリングリストの案内