2010-03-16 84 views
1

当我读笨的代码,我发现写了一些功能如下:函数参考有什么好处?

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

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

    return $OBJ->load; 
} 

我能理解变量refrence,但我也很难得到这个through.Is有必要使用此功能,风格和任何?效益?

谢谢。

回答

6

在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. 

?> 

在上面的例子中,去除功能decleration的&将使$ foo的变量仍然含有“富”,因为只有值,而不是引用从函数返回。

这在PHP4中更常用,因为它没有通过引用传递对象,而是将它们克隆。因此,必须通过引用传递对象变量以避免不必要的克隆。这在PHP5中不再是这种情况,并且引用不应该用于此目的。

但是,返回引用的函数并不是完全无用的(或者当不用于替换对象引用时,不好的做法)。例如,我个人在创建一个将“路径”传递给函数的脚本时使用了它们,该函数返回对该路径中的变量的引用,以便为其设置值并读取该值。由于函数的递归性质,需要返回引用。

+0

+1为质量答案 – user187291 2010-03-16 14:20:32

1

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