2009-06-26 4 views
3

それはかなりです。ほとんどのオブジェクト指向プログラミング言語でスコープを設定すると、現在のインスタンス(PHPでの '$ this'など)への明示的な参照なしにシンボルを正しく解決できます。なぜPHPは$ thisと同じクラスのメンバ関数へのすべての呼び出しに先行する必要がありますか?

+0

[PHPで$ thisとself ::を持つ点は何ですか?](http://stackoverflow.com/questions/3345408/what-is-the-point-of-having-this- and-self-in-php) –

答えて

11

関数呼び出しの範囲を解決します。考えてみましょう:

$this->strstr(... 

とちょうど

strstr(... 

を、後者は、私たちがここで何をしたいのかではありませんPHPの組み込みはstrstr()関数を呼び出します。

OOP機能を高水準の手続き型/スクリプト言語に追加した結果です。

+0

意味があります。私は、$ this-> myFunc()を常に使用しなければならないことが不必要に冗長であると感じています。しかし、PHPの組み込み関数の場合は、ポイントがあります。 '$ this'修飾子が必須でない場合は、 '組み込みメソッドを呼び出す'ことを明示するシンボル(たとえば、 '$ - > ststr()'など)が必要です。答えをありがとう。 :) – rinogo

+0

関数/メソッド呼び出しを例えば次のように解決させることは可能でしたが、 C++はそうです。 :: strstr() – VolkerK