我在谈论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
关键字相关的内容?
答案 0 :(得分:4)
该变量前面的static
修饰符表示每次函数调用后$_classes
的值仍然存在。
因此,第一次调用该函数时,$_classes
尚不存在,因此它被创建为空数组。
由于它是空的,所以该类不存在,因此它被加载并放入$_classes
变量。
现在当函数终止时,因为它是static
,它不会被清除,并且它的值仍然存在。
下次调用该函数时,PHP知道它已经存在,因此不初始化为空数组,它仍然包含上次调用该函数时的内容。
有关详细信息,请参阅using static variables。