• ベストアンサー

クラス内でメソッド呼ぶ際、this付けないとダメ?

クラス内で、メソッドを呼び出す際、なぜ、$this->メソッド名();としなければいけないのでしょうか? 疑問内容としては、下記リンク先の人と同じなのですが、 なんで、メソッド名();を普通に呼ぶだけではダメなのでしょうか? publicクラス内で、publicなメソッドから、publicなメソッドを呼ぶだけだから、普通の呼び出しでイケると思ったのですが… ▽クラス内での関数の呼び出しについて。 - PHPプロ!Q&A掲示板   http://www.phppro.jp/qa/2846

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

そういうルールだからというのが簡単な答えですが。 (^^; クラス内のメソッドと関数を区別するためのルールです。 クラス内で定義したメソッドの名前は、そのクラスのインスタンスで有効な名前なので $this-> を付けて自分自身のインスタンスに定義されているメソッドだと指定してあげなければどのクラスの中のメソッドなのか、関数として定義されているモノなのか判らなくなってしまいます。 以下のようなプログラムだと意味が分かって貰えるのではないでしょうか。 関数 hoge が定義されていて、HogeClass の中にもメソッド hoge が定義されています。 関数 hoge はプログラムのどこからでも呼び出せる関数ですから HogeClass の中からも呼び出せなければいけません。 HogeClass の中の hoge メソッドは関数 hoge と区別されなければいけないので、区別するための識別子が必要なのです。 <?php function hoge () { return "b"; } class HogeClass { public static function hoge () { return "a"; } public static function hoge2 () { return hoge(); } } echo HogeClass::hoge2(); // b が表示される ?>

re97
質問者

お礼

回答ありがとうございました。 説明分かりやすかったですー

その他の回答 (1)

回答No.2

$thisは自分自身だから

re97
質問者

お礼

回答ありがとうございましたー

関連するQ&A