2012-08-11 42 views
0

我說的是CodeIgniter框架(系統/核心文件夾)的Common.php文件。php靜態變量初始化在這裏沒有意義

//不需要回答這個問題!

我一直在通過代碼,並且無法理解這些特定的行開始load_class函數。

static $_classes = array(); 

// Does the class exist? If so, we're done... 
if (isset($_classes[$class])) 
{ 
    return $_classes[$class]; 

我的疑問是特別,是不是毫無意義的聲明爲空數組變量,並立即檢查是否存在關鍵的是陣列中的存在?或者我錯過了與static關鍵字相關的內容?

回答

4

該變量前面的static修飾符表示在每次函數調用之後,$_classes的值仍然存在。

因此,第一次調用該函數時,$_classes尚不存在,因此它被創建爲空數組。

由於它爲空,該類不存在,因此它被加載並放入$_classes變量中。

現在,當函數終止時,因爲它是static,它不會被清理,並且其值保持不變。

下一次函數被調用時,PHP知道它已經存在,所以它不是而是被初始化爲一個空數組,它仍然包含它上次調用該函數的內容。

有關更多信息,請參閱using static variables

+0

我從來沒有在php中使用'static'!我想** _php_有很多**可以掌握。謝謝。 – Prasanth 2012-08-11 19:44:05