phpのディストラクタ

phpのディストラクタが思ったように動いていなかった。

$obj =null;
if($boo) {
$obj = new A($str);
} else {
$obj = new B($str);
}

$obj->const = "aaa";

みたいなソースなら、$obj->const = "aaa";の後に
ディストラクタが走ると思っていたが、
$obj->const = "aaa";
が反映されていない。

ディストラクタ内でログを入れたら、
$obj = new A($str);
の後のifのスコープが終わったらディストラクタが実行している。

当然、以下のようにすると、

$obj = new A($str);
$obj->const = "aaa";

$obj->const = "aaa";の後でディストラクタが実行している。

$obj =null;
をフィールドに変えても同じでifのスコープが終わったらディストラクタが実行している。

大事なことかもしれないけど、
急いでいるので、調べるのをあきらめて、
ソースを変えた。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック