- ベストアンサー
クラス内でメソッド呼ぶ際、this付けないとダメ?
クラス内で、メソッドを呼び出す際、なぜ、$this->メソッド名();としなければいけないのでしょうか? 疑問内容としては、下記リンク先の人と同じなのですが、 なんで、メソッド名();を普通に呼ぶだけではダメなのでしょうか? publicクラス内で、publicなメソッドから、publicなメソッドを呼ぶだけだから、普通の呼び出しでイケると思ったのですが… ▽クラス内での関数の呼び出しについて。 - PHPプロ!Q&A掲示板 http://www.phppro.jp/qa/2846
- みんなの回答 (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 が表示される ?>
その他の回答 (1)
- don_donto_koi
- ベストアンサー率22% (12/53)
$thisは自分自身だから
お礼
回答ありがとうございましたー
お礼
回答ありがとうございました。 説明分かりやすかったですー