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

时间:2014-11-10 07:09:39

标签: php codeigniter

来自CodeIgniter用户指南(https://www.codeigniter.com/user_guide/general/ancillary_classes.html):

$CI =& get_instance(); 

"这非常重要。通过引用分配允许您使用原始CodeIgniter对象而不是创建它的副本"。

但正常的赋值($ CI = get_instance();)也不会导致创建原始CodeIgniter对象的副本,不是吗?

1 个答案:

答案 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:

但它没有。所以我认为它会归还原作。