来自CodeIgniter用户指南(https://www.codeigniter.com/user_guide/general/ancillary_classes.html):
$CI =& get_instance();
"这非常重要。通过引用赋值可以使用原始CodeIgniter对象,而不是创建它的副本"。
但正常赋值($CI=get_instance();)也不会导致创建原始CodeIgniter对象的副本,是吗?
我认为$CI=get_instance()
不复制原件。它返回原始文件。如果查看system''core''Controlle.php,get_instack()函数将返回控制器的引用。我也测试了它。这是我的测试方法。
public static function function1() {
$CI = get_instance();
$CI->config->set_item('item_name', 'item_value');
echo "inside function 1:".$CI->config->item("item_name")."<br>";
}
public static function function2()
{
$CI = get_instance();
echo "inside function 2:".$CI->config->item("item_name")."<br>";
}
现在我从另一个方法调用了function1和function2。它产生了类似的输出
inside function 1:item_value
inside function 2:item_value
如果$CI是副本,它应该输出
inside function 1:item_value
inside function 2:
但它没有。所以我认为它返回了原来的。