2012-08-11 38 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