[PHP-users 22735]Re: PerlのDESTORYメソッドに匹敵するもの

大島由喜枝 sanoyuki @ ninus.ocn.ne.jp
2004年 7月 23日 (金) 12:14:57 JST


こんにちわ。大島です。

有益な情報ありがとうございました。
ただ、オブジェクト指向プログラミングとしては
register_shutdown_function() もクラスの中で実行したいと思い、
コンストラクター内で実行しましたがうまくいきました。

これで、すでに他のクラスのサブクラスになっているクラスで
PEAR を継承できない場合でもつかえますね。

どうもありがとうございました。

以下、実行結果です。

$ cat test2.php
<?php

class A {
        var $name;
        function A($name) {
                $this->name = $name;
                register_shutdown_function(array(&$this, 'destroy'));
        }

        function destroy() {
                print "さようなら $this->name さん\n";
        }

}

print "MAIN START\n";
$a = new A("oshima");
print "MAIN END\n";

?>



$ php test2.php
MAIN START
MAIN END
さようなら oshima さん
$



*************
しあわせ太郎のCGI光房
http://happytaro.pekori.jp/Home/
----- Original Message ----- 
From: "Katsutoshi Watanabe" <watanabe @ dreamexchange.co.jp>
To: "'PHP-users メーリングリスト送信'" <php-users @ php.gr.jp>
Sent: Friday, July 23, 2004 10:45 AM
Subject: [PHP-users 22732] Re: PerlのDESTORYメソッドに匹敵するもの


> すでに解決になっていますが、気になりましたので補足を。
> register_shutdown_function() は引数に配列を渡すことで、
> オブジェクトへのアクセスが可能です。
>
> 大島さんスクリプトの場合ですと、destroy()をclass Dataに内包したら、
> # destory でなく destroy ですね
> register_shutdown_function(array(&$this, 'destroy')) とすることで
> 実現できるかと思います。
> 以下が別の形の例文です。
>
> class A
> {
> function A ()
> {
> echo 'A'.'<BR>';
> }
>
> function destroy ()
> {
> echo 'destroy';
> }
> }
>
> $obj = new A ();
> register_shutdown_function(array(&$obj, 'destroy'))
> // array('obj', 'destroy') でも動作しますが仕様の範囲かどうかわかりません
(^
> ^;
>
> [結果]
> A
> destroy
>
>
> (・>    渡辺 克俊 Watanabe Katsutoshi
> ( /)ゝ    watanabe @ dreamexchange.co.jp
> ´ ´─────────────────────
> 株式会社DEX
>
>
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3



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