Codeigniter用户指南-为什么他们通过引用分配CI对象并说它';这很重要


Codeigniter user guide - why do they assign CI object by reference and say that it's important

来自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:

但它没有。所以我认为它返回了原来的。