[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 メーリングリストの案内