来自CodeIgniter用户指南(https://www.codeigniter.com/user_guide/general/ancillary_classes.html):
$CI =& get_instance();
"这非常重要。通过引用分配允许您使用原始CodeIgniter对象而不是创建它的副本"。
但正常的赋值($ CI = get_instance();)也不会导致创建原始CodeIgniter对象的副本,不是吗?
答案 0 :(得分:0)
我认为$CI=get_instance()
不会复制原件。它会返回原件。如果你查看system \ core \ Controller.php,get_instace()函数会返回控制器的引用。我也测试了它。这是我的测试方法,我是如何测试它的。
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和fucntion2。 它产生了像这样的输出
inside function 1:item_value
inside function 2:item_value
如果$ CI是复制它应该输出
inside function 1:item_value
inside function 2:
但它没有。所以我认为它会归还原作。