2010-10-27 73 views
2

這是教程書的代碼。當聲明一個函數時,'static'的含義是什麼

class user { 
    // return if username is valid format 
    public static function validateUsername($username){ 
     return preg_match('/^[A-Z0-9]{2,20}$/i', $username); 
    } 
} 

我想知道靜態功能是什麼?

這太糟糕了這本書我讀了沒有解釋:(

+1

迂腐注:這是一個方法,而不是一個函數(我知道它仍然使用了'function'關鍵字,但它是因爲它綁定到一個類中的方法).. – ircmaxell 2010-10-27 16:29:49

回答

10

最終的結果是,你並不需要創建類的實例來執行功能(還有更多比,但我會讓手動覆蓋的部分):

PHP: Static Keyword - Manual

在你的榜樣,你會打電話給你的功能,如:

user::validateUsername("someUserName"); 

而不是必須創建一個實例,然後調用函數:

$user = new user(); 
$user->validateUsername("someUserName"); 
+3

我會爲這個答案投票,但它的意義遠不止於此。 – 2010-10-27 16:22:33

+0

@NickLarsen - 重新措辭的東西有點讓人更清楚。 – 2010-10-27 16:25:57

+0

非常感謝你的鏈接,它的解釋如此之多:) – GusDeCooL 2010-10-28 05:21:04

0

靜態函數是屬於類而不是對象實例的函數。使用self關鍵字從類

self::validateUsername(...); 

靜態函數內部的全局函數的方式

user::validateUsername(...); 

或者 - 它們可以被稱爲沒有直接提到它實例化的類。您應該謹慎使用這些功能,因爲靜態功能的依賴性很難提取,並且使測試和重用更加困難。

更多PHP手冊 - the static keyword

相關問題