2009-09-24 25 views
2

我想學習面向對象和類和所有那些在PHP中的好東西,我終於學習了使用它的一些好的sytax,我很好奇如果有開始一個新的對象而不是使用靜態方法的好處......讓我告訴了我的意思了一些代碼...更好地使用PHP中的對象或靜態函數?

<?PHP 
test class 
{ 
    public function cool() 
    { 
     retunr true; 

    } 
} 

//Then calling it like this 
$test = new test(); 
$test->cool(); 
?> 

OR

<?PHP 
test class 
{ 
    public static function cool() 
    { 
     retunr true; 

    } 
} 

//Then calling it like this 
test::cool(); 

?> 

我意識到這是最基礎的例子想象得到的回答可能視情況而定,但也許你可以幫助我更好地理解一下

回答

3

對於您的示例,最好使用靜態函數,但大多數情況不會那麼簡單。首先,一個好的經驗法則是如果一個方法不使用$this變量,那麼它應該是靜態的。

+0

似乎是一個偉大的經驗法則,特別是關於代碼的可測試性。 – svandragt

1

認爲像對象的「藍圖」這樣的類。當它是一個可以應用於任何地方的通用函數時,您想要使用靜態方法,並且當您想引用該特定對象時使用方法。

+0

幾乎給了你+1,但是......「當你想要使用靜態方法時,它總是將*應用於任何對象。 @too很多PHP的答案是更好的 - 如果你需要訪問'$ this',它不是靜態的。 – Josh

1

這裏是一篇文章,討論這些概念之間的性能差異: http://www.webhostingtalk.com/showthread.php?t=538076

基本上沒有任何性能差異,所以選擇是基於您的設計。

如果你打算多次創建一個對象,那麼顯然一個類是有意義的。

如果您正在創建與特定對象無關的效用函數,請創建一個靜態函數。

+0

我不認爲我們需要在這種情況下談論表現。在這種簡單的情況下運行後,幾乎總是會損害一種編程風格,並使你的代碼聞起來很糟糕。 –

+0

我只是覺得有趣的是沒有什麼區別,而且它確實有助於知道是否會用一種或另一種方式進行大的處罰來幫助做出某些決定。 –

相關問題