Php 函数引用的好处是什么?

Php 函数引用的好处是什么?,php,Php,当我阅读CodeIgniter的代码时,我发现一些函数编写如下: function &get_instance() { global $CI, $OBJ; if (is_object($CI)) { return $CI; } return $OBJ->load; } 我能理解变量引用,但我很难理解。有必要使用这种函数样式吗?有什么好处吗 谢谢。这与变量引用的概念相同,事实上,当您希望返回对变量的引用而不是值本身时,需要使用此样式

当我阅读CodeIgniter的代码时,我发现一些函数编写如下:

function &get_instance()
{
   global $CI, $OBJ;

   if (is_object($CI))
   {
       return $CI;
   }

   return $OBJ->load;
}
我能理解变量引用,但我很难理解。有必要使用这种函数样式吗?有什么好处吗


谢谢。

这与变量引用的概念相同,事实上,当您希望返回对变量的引用而不是值本身时,需要使用此样式


本手册对此进行了解释:

这与变量引用的概念相同,事实上,当您希望返回对变量的引用而不是值本身时,需要此样式


在这里的手册中解释:

不,没有好处。这对于php4是必要的,但在php5中这是一种不好的做法。

不,没有任何好处。这对于php4是必需的,但在php5中这是一种糟糕的做法。

在PHP语法中,这意味着函数返回一个引用而不是一个值。例如:

<?php

$foo = 'foo';

function & get_foo_ref ()
{
    global $foo;
    return $foo;
}

// Get the reference to variable $foo stored into $bar
$bar = & get_foo_ref();
$bar = 'bar';

echo $foo; // Outputs 'bar', since $bar references to $foo.

?>
在上面的示例中,从函数decelleration中删除&将使$foo变量仍然包含“foo”,因为函数只返回值,而不返回引用

这在PHP4中使用得更多,因为它不通过对象的引用传递对象,而是克隆对象。因此,必须通过引用传递对象变量,以避免不必要的克隆。PHP5中不再是这种情况,因此不应使用参考文献


但是,当不用于替换对象引用时,返回引用的函数也不是完全无用的,也不是不好的做法。例如,我个人在创建一个向函数传递路径的脚本时使用了它们,该脚本返回对该路径中变量的引用,允许我设置该路径的值并读取该值。由于函数的递归性质,需要返回引用。

在PHP语法中,这意味着函数返回引用而不是值。例如:

<?php

$foo = 'foo';

function & get_foo_ref ()
{
    global $foo;
    return $foo;
}

// Get the reference to variable $foo stored into $bar
$bar = & get_foo_ref();
$bar = 'bar';

echo $foo; // Outputs 'bar', since $bar references to $foo.

?>
在上面的示例中,从函数decelleration中删除&将使$foo变量仍然包含“foo”,因为函数只返回值,而不返回引用

这在PHP4中使用得更多,因为它不通过对象的引用传递对象,而是克隆对象。因此,必须通过引用传递对象变量,以避免不必要的克隆。PHP5中不再是这种情况,因此不应使用参考文献

但是,当不用于替换对象引用时,返回引用的函数也不是完全无用的,也不是不好的做法。例如,我个人在创建一个向函数传递路径的脚本时使用了它们,该脚本返回对该路径中变量的引用,允许我设置该路径的值并读取该值。由于函数的递归性质,需要返回引用