【问题标题】:php static variable initialization doesn't make sense herephp静态变量初始化在这里没有意义
【发布时间】:2012-08-11 19:32:05
【问题描述】:

我说的是 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 关键字相关的内容?

【问题讨论】:

    标签: php codeigniter static


    【解决方案1】:

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

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

    由于它为空,因此该类不存在,因此将其加载并放入$_classes 变量中。

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

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

    更多信息请参见using static variables

    【讨论】:

    • 我从来没有在php中使用过static!我想有 lotphp 需要掌握。谢谢。
    猜你喜欢
    • 2017-08-16
    • 1970-01-01
    • 2011-08-22
    • 2010-12-22
    • 1970-01-01
    • 2015-09-06
    • 2017-05-13
    • 2010-09-26
    • 2011-02-06
    相关资源
    最近更新 更多