php静态变量初始化在这里没有意义

时间:2012-08-11 19:32:06

标签: php codeigniter static

我在谈论CodeIgniter框架的Common.php文件(系统/核心文件夹)。

//不需要回答这个问题!

我一直在查看代码,无法理解load_class函数的 start 中的这些特定行。

static $_classes = array();

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

我特别怀疑,将变量声明为空数组并不是没有意义,并立即检查该数组中是否存在某个键?或者我遗漏了与static关键字相关的内容?

1 个答案:

答案 0 :(得分:4)

该变量前面的static修饰符表示每次函数调用后$_classes的值仍然存在。

因此,第一次调用该函数时,$_classes尚不存在,因此它被创建为空数组。

由于它是空的,所以该类不存在,因此它被加载并放入$_classes变量。

现在当函数终止时,因为它是static,它不会被清除,并且它的值仍然存在。

下次调用该函数时,PHP知道它已经存在,因此初始化为空数组,它仍然包含上次调用该函数时的内容。

有关详细信息,请参阅using static variables