電子書籍の厳選無料作品が豊富!

クラス内で、メソッドを呼び出す際、なぜ、$this->メソッド名();としなければいけないのでしょうか?

疑問内容としては、下記リンク先の人と同じなのですが、
なんで、メソッド名();を普通に呼ぶだけではダメなのでしょうか?
publicクラス内で、publicなメソッドから、publicなメソッドを呼ぶだけだから、普通の呼び出しでイケると思ったのですが…

▽クラス内での関数の呼び出しについて。 - PHPプロ!Q&A掲示板
  http://www.phppro.jp/qa/2846

A 回答 (2件)

そういうルールだからというのが簡単な答えですが。

 (^^;
クラス内のメソッドと関数を区別するためのルールです。
クラス内で定義したメソッドの名前は、そのクラスのインスタンスで有効な名前なので $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 が表示される
?>
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/03/20 14:07

$thisは自分自身だから

    • good
    • 1
この回答へのお礼

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

お礼日時:2013/03/20 14:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!