[PHP-users 22720]Re: PerlのDESTORYメソッドに匹敵するもの
    KOYAMA Tetsuji
    koyama @ hoge.org
       
    2004年 7月 22日 (木) 22:22:55 JST
    
    
  
  小山です。
At Thu, 22 Jul 2004 22:00:42 +0900,
大島由喜枝 wrote:
> さっそく register_shutdown_function() で インスタンスデストラクタ
> 的な使い方ができるかどうかやってみました。
> 
> 今回私がやりたかったデータベース接続の切断はできませんでした。
> というのも、register_shutdown_function() ではメソッドは指定できないので
> インスタンス変数にアクセスすることができないからです。
> register_shutdown_function() にメソッドが指定できないので以下のように
> クラスの外に destory() をつくったところでインスタンス変数 $db にアクセス
> できないので、意味ないでした。。。。。
> 
> class Data {
>     var $db;
>     function Data() {
>         ...
>         register_shutdown_function('destory');
>     }
>     ...
> }
> function destory() {
>     ...
> }
  register_shutdown_function を利用したなんちゃってデストラクタを使い
たいのであれば、PEAR のサブクラスにするのが楽ちんです。
  こんな感じに _クラス名 というメソッドがあれば、それをプログラム終了
時に呼び出してくれます。
require_once 'PEAR.php';
class Data extends PEAR {
    var $db;
    function Data() {
        parent::PEAR(); // 親コンストラクタの呼び出し
        ...
    }
    function _Data() {  // なんちゃってデストラクタ
        $this->destroy();
    }
    function destroy() {
       ....
    }
}
-- 
	小山 哲志@ビート・クラフト
	koyama @ beatcraft.com
	koyama @ hoge.org
    
    
PHP-users メーリングリストの案内