[PHP-users 9202] Re: クラス関数とオブジェクト関数で同一名を使うには?

Mashiki php-users@php.gr.jp
Wed, 07 Aug 2002 01:34:31 +0900


 Mashikiです。

大垣さんありがとうございます。

>元の記事を読んでませんでした。
>しかし、例に書いてあるコードと結果におかしな
>所はありませんが、どこがおかしいのでしょうか?

私も簡単なスクリプトをテストし、ある程度の自信を持って
進行中のプロジェクトのクラスに組み込もうとしたのですが、
「クラスメソッドとしてコールしたのに、isset($this)がtrueを
返し、しかもprint_rでチェックすると、クラスメソッドを持つ
クラスとまったく関係のないオブジェクトを指していた」と
いう状況に遭遇してしまいました。

大垣さんの修正されたスクリプトを多少複雑にしてみて、再現
させようと思ったのですが、再現してくれませんでした。

># PHP4のオブジェクトはハンドルではなく、オブジェクト
># 自体がコピーされてるのが困ると言う事でしょうか?

いえ、純粋にisset($this)などで切り分けが可能かを知りたかった
だけです。

>たしか、isset($this)はPEARにも使われていると思います。
>使ってはいけないと言う物ではないと思います。

今確認しました。PEAR.phpにバリバリ使われてますね。


 私が再現を確認できたのは、インクルードするファイルが15
くらいで、pgsqlテーブルアクセスも10くらいある環境でしたので、
ソースをそのままUPすることはためらわれました。

また、再現性を残しつつ問題をリデュースすることもうまくいきま
せんでした。時間のあるときにもう一度トライしてみます。