2013-04-03 9 views
6

古い同僚は、私たちのコードでこれを書いた:PHPは、クラス関数とプロパティが同じ名前を共有できるようにしますか?鉱山の

public function paginate() { 
    return $this->paginate; 
} 

と私は思っていた:これは、関数のpaginate()またはクラスのプロパティ$のpaginateを返すのですか?

私は後者を推測していますが、私はこの件に関する情報が見つからないことは奇妙です。

+0

なぜ自分自身を試していないのですか? –

+1

PHPには隠れた/自動/魔法のビヘイビアがたくさんあるので、簡単なテストでそれを逃すことができます! – CoR

答えて

5

これは、クラスプロパティ$paginateを返します。

それが機能someName()を返し、その後return $this->someName();

だった場合。

0

と宣言されている場合は、関数が属するクラスの$paginateプロパティまたは別のクラスのihneritsプロパティを返します。

1

戻りオブジェクトのプロパティ:

$this->paginate; 

原因

対オブジェクトのメソッドを実行する関数呼び出しの後

$this->paginate(); 
2

ブラケット(クラス内の関数はメソッドと呼ばれています) PHPではオプションではなく、通常のメソッドや関数は「ファーストクラスのオブジェクト」ではありません(JavaScriptなどのように、独自の変数として操作することはできません)。

したがって、$this->paginate();は関数呼び出しでなければならず、$this->paginate;は可変参照でなければならないため、曖昧さはありません。

しかし、それは特に良い習慣ではなく、編集者やIDEなどが警告として強調するでしょう。一般に、関数とメソッドは名詞ではなく動詞で始める必要があります。したがって、関数の名前はよりよくなります。getPaginate()

関連する問題