我有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世界中的新手。
答案 0 :(得分:0)
self::$instance =& $this;
在这里我不需要&
。对象始终分配为引用,而不是复制。这可能是需要它的旧版本PHP遗留下来的遗物。
$this -> $var =& load_class( $class ) ;
这将创建一个名称为$var
的新属性,并使其引用该类。
is_loaded()
返回一个关联数组,该数组将属性名称映射到类名称,然后循环加载所有这些类并将它们分配给属性。