Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解php引用和静态_Php_Codeigniter_Oop - Fatal编程技术网

理解php引用和静态

理解php引用和静态,php,codeigniter,oop,Php,Codeigniter,Oop,我试图理解CodeIgniter的核心基础知识,比如加载类。我被困在这里: function &load_class($class, $directory = 'libraries', $prefix = 'CI_') { static $_classes = array(); // Does the class exist? If so, we're done... if (isset($_classes[$class])) { re

我试图理解CodeIgniter的核心基础知识,比如加载类。我被困在这里:

function &load_class($class, $directory = 'libraries', $prefix = 'CI_')
{
    static $_classes = array();

    // Does the class exist?  If so, we're done...
    if (isset($_classes[$class]))
    {
        return $_classes[$class];
    }
     ...
     ... // more code 
     ...
}
然后他们加载类,如下所示:

$BM =& load_class('Benchmark', 'core');
所以我的理解问题是为什么在函数名之前使用&before,为什么使用static,为什么使用'=&'。。我认为他们有一些共同点。 每次使用load\u class函数时,$\u类是否会作为空数组覆盖

谢谢大家!

以下函数

function &load_class($class, $directory = 'libraries', $prefix = 'CI_') { //... }
将返回引用而不是值。也就是说,当你像这样调用函数

$BM =& load_class('Benchmark', 'core');
在这种情况下,
$BM
将获得类
基准的引用

检查

以下变量

static $_classes = array();
将仅初始化一次,并将在函数结束时和下次执行重新进入函数时保持其状态,如果它看到变量
$\u classes
已初始化,则不会再次初始化,如果未初始化,则将对其进行初始化。当您需要在后续调用中保持变量的相同状态,但还不是全局变量时,这非常有用


检查。

这正是我想听到的,谢谢!所以$\u类将被初始化一次,因为每次使用“=&”,实际上使用的是同一个实例?是的,此变量将其状态保持在函数范围内。