[PHP-users 9206] メザコヴロミネミュピボザベボヴケイーインヴメザコヴクラス関数とオブジェクト関数で同一名を使うには?

しょうなり [ml] php-users@php.gr.jp
Wed, 07 Aug 2002 10:45:48 +0900


しょうなりです。

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

目的のクラスとまったく関係ないオブジェクト内から
目的のクラス内で isset($this) したということですね?

およそ↓こんな感じでしょうか?

class A {
 function A () {
  print get_class($this)." : "; // class名の出力
  print (isset($this)) ? "OBJECT" : "CLASS";
  print "<BR>";
 }
}

class B {
 function B () {
  A::A();
 }
}

A::A();
$OB = new B;

---出力結果

: CLASS
b : OBJECT


先日僕も気付いて、多重継承みたいなことができて便利って
思っていました。
(class A のメソッドで class B のプロパティを操作できます)
(PHP, Perl 以外の言語をやったことないので、本当の多重継承が
 どういうのか知りませんが (^^;)

勘違いしてて外していたら読み流してください。


-- 
しょうなり@信州 肥田昌也
Email(ML): ml@webappli.jp
Email:     shounari@webappli.jp
HomePage:  http://www.webappli.jp/
	=> JSlayout プレビュー版(見〜る〜だ〜け〜)