2012-11-25 61 views
1

當使用OOP在PHP中我見過很多這樣寫的功能:function __myfunc(){} 我想知道什麼下劃線做。我已閱讀他們保護功能,但從什麼和如何?爲什麼下劃線PHP類功能

又如:

class myClass{ 
    function __myFunc(){ 
     return ' what am i doing?'; 
    } 
} 
$question = new myClass; 
echo $question->__myFunc(); 
+1

請看看這個答案:http://stackoverflow.com/questions/1820973/下劃線在PHP功能 – eaykin

回答

3

的下劃線沒有任何效果。然而,兩個下劃線用於表示一個神奇功能具有特殊的意義,例如構造函數__construct()或析構函數__destruct()。有些人使用一個或兩個下劃線來表示一種方法是「私人」的,即只在內部使用。由於此功能在PHP> = 5實現爲一個特殊的關鍵字,你不應該使用這個「強調」了:

class myClass{ 
    private function myFunc() { 
     return ' what am i doing?'; 
    } 
} 

$question = new myClass(); 
echo $question->myFunc(); // fails! 
+0

如果您使用的是像Zend框架的框架,你可能希望保持與框架編碼標準和使用下劃線爲私人和保護方法的命名保持基本代碼一致。 –

2

這基本上是一個代碼符號,該方法是private和代碼的用戶不應該用它玩。 (對整體功能至關重要)

您應該只在私人方法上放置下劃線符號,這被認爲是一種好的做法。

+0

感謝您的答案我應該一定要做下一次我建立一個私人功能。 – sourRaspberri

+0

該手冊說:「建議您不要**在PHP中使用函數名和__,除非您需要一些記錄的_magic_功能」。所以..據我瞭解,你應該**不**使用它*私人*功能!? – eyecatchUp

+0

我們正在討論一個* *底線,但肯定使用* __ *不推薦,因爲它會被誤解爲魔術方法。 –

1

有一些功能被稱爲magic別人只是將它們標記爲私有的符號 - 所以如果某人組成團隊,請用下劃線來看這個函數,他會認爲它是私有的。但實際上你可以在課堂外使用它們。爲了保護內部類的方法,你需要使用access modifiers

+0

感謝您的信息。我從來沒有在一個團隊編碼,所以這應該派上用場,如果我這樣做。如果我在任何舊功能上看到這一點,我應該認爲它有效,我不應該篡改它? – sourRaspberri

+0

這取決於情況。我可以用強調的所有函數編寫代碼,但可以使用所有函數。但通常,是的,你不需要直接使用它們。通常他們有「公共」方法,這是接口 - 你只需要使用公共功能。 –

相關問題