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


php static variable initialization doesn't make sense here

我说的是CodeIgniter框架(系统/核心文件夹)的Common.php文件。

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

我一直在浏览代码,load_class函数开始时无法理解这些特定行。

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

我的疑问是,将变量声明为空数组并立即检查该数组中是否存在某些键不是毫无意义吗? 还是我错过了与static关键字相关的内容?

变量前面的static修饰符表示$_classes的值在每次函数调用后保持不变。

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

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

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

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

有关详细信息,请参阅使用静态变量。