PHP参考-这段代码做什么?

时间:2019-09-13 22:29:29

标签: php codeigniter

我有CodeIgniter框架源代码的下一个代码属性:

unq = array([[[1,2,3],
              [3,1,2],
              [2,1,3]],

             [[3,5,4],
              [5,1,3],
              [3,2,6]],

             [[6,7,8],
              [9,4,0],
              [4,6,5]]])

在此部分,它本身不是引用“ $ this”吗?他们为什么使用&符号。

class CI_Controller {

    private static $instance;

    public function __construct()
    {
        self::$instance =& $this;

        foreach (is_loaded() as $var => $class)
        {
            $this -> $var =& load_class( $class ) ;
        }

        $this -> load =& load_class('Loader', 'core') ;
        $this -> load -> initialize() ;
        log_message('info', 'Controller Class Initialized') ;
    }

    public static function &get_instance()
    {
        return self::$instance;
    }

}

我不了解的另一件事是在foreach代码块中。

“ $ var”变量链接到谁?我在类中看不到任何定义,因此为什么要在其中使用$ this引用。

有人可以向我解释一下吗? ...

我是PHP世界中的新手。

1 个答案:

答案 0 :(得分:0)

self::$instance =& $this;

在这里我不需要&。对象始终分配为引用,而不是复制。这可能是需要它的旧版本PHP遗留下来的遗物。

            $this -> $var =& load_class( $class ) ;

这将创建一个名称为$var的新属性,并使其引用该类。

is_loaded()返回一个关联数组,该数组将属性名称映射到类名称,然后循环加载所有这些类并将它们分配给属性。