2013-04-03 45 views
6

我的一個老同事的我們的代碼寫了這個:PHP允許類函數和屬性共享相同的名稱嗎?

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

,我想知道:這是否返回功能PAGINATE()或類屬性$ PAGINATE?

我在猜測後者,但奇怪的是我還沒有找到關於此主題的任何信息。

+0

爲什麼你沒有嘗試過自己。 – 2013-04-03 08:08:21

+1

因爲PHP有​​許多隱藏/自動/魔術行爲,可能會被簡單的測試遺漏! – CoR

回答

5

返回類屬性$paginate

如果是return $this->someName();

然後返回功能someName()

0

它將返回該功能屬於或ihnerits從另一個類,如果它被聲明爲public類的$paginate財產。

1

返回一個對象屬性:

$this->paginate; 

VS

導致對象方法來運行一個函數調用後(在一個類的函數被稱爲方法)

$this->paginate(); 
2

托架在PHP中不是可選的,普通的方法和函數不是「第一類對象」(它們不能作爲變量進行操作,例如在JavaScript中)。

因此,不存在歧義,因爲$this->paginate();必須是函數調用,並且$this->paginate;必須是變量引用。

但是,這不是特別好的做法,編輯,IDE等可能會突出顯示它作爲警告。一般來說,函數和方法應該以動詞而不是名詞開頭,所以函數會更好地命名爲getPaginate()

相關問題