0

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

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

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

static $_classes = array();

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

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

4

1 回答 1

4

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

所以第一次调用该函数时,$_classes它还不存在,所以它被创建为一个空数组。

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

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

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

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

于 2012-08-11T19:36:52.513 回答