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

Ryosuke Hosoi hosoi @ ryo.com
2004年 6月 2日 (水) 19:54:17 JST


細井です

From: yuji koga <koga-y @ mcp-net.com>
Subject: [PHP-users 21956] オブジェクトに、自分自身を削除するメソッドを実装する方法について
Date: Thu, 03 Jun 2004 10:56:29 +0900
Message-ID: <BCE4B444.9C1B%koga-y @ mcp-net.com>

> 例えば、オブジェクトに、自分自身を削除するメソッドを実装する時は、
> 通常、以下のように行うと思います。
> 
> class A {
>   function destroy(){
>     unset($this)
>   }    
> }
> 
> 
> しかしながら、
> 
> $A = new A();
> $A->destroy();
> 
> 後、
> 
> isset($A)
> 
> を確認するとTRUE、すなわち$Aは削除されていない、という事になります。

うーん、個人的にはphp3/4にはもともとデストラクタはないわけですから、
自分自身を削除する必要があるオブジェクトを設計することはしません。

名案でもなんでもなくて申し訳ないんですが、思いつきで
class A {
  function destroy(){
    $this = null;
  }    
}
とやってみたら、isset($A)はなくりますね。

但し、$GLOBALS['A']はnullという値が残るという、奇妙な状態になります。

is_object($A)もfalseになるので、それなりにいけるんじゃないかな?
と思うのですが、どうでしょう?

-- 
 Ryosuke Hosoi / 細井 良祐
 mailto:hosoi @ ryo.com http://www.ryo.com/
 PGP Public Key http://www.ryo.com/ryo/hosoi.ryo.com.asc
 fingerprint = 4F39 61B0 2034 3A5C DFE8  FBCB 7B99 90CF EBE1 A3F3


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