这个符号 (&) 在 PHP 中代表什么意思?

10

考虑:

public function & get($name, $default = null)

为什么要使用 & 符号?


3个回答

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

在上面的例子中,如果从函数声明中删除&,那么$foo变量仍将包含'foo',因为只有值而不是引用是从函数返回的。
在PHP4中更常使用此方法,因为它不通过引用传递对象并代之以克隆。因此,为了避免不需要的克隆,必须通过引用传递对象变量。在PHP5中不再需要这样做,也不应该使用引用来达到此目的。
然而,返回引用的函数并非完全无用(或者说是不良实践,当没有用于替换对象引用时)。例如,个人曾经在创建一个传递“路径”给函数的脚本中使用它们,该函数返回该路径中变量的引用,使得我能够设置和读取该值。由于函数的递归性质,返回引用是必要的。
rithiur撰写。

+1 对于实用的深入解释,同时也证明了SO的声望系统并不完全公平。 - Manos Dilaverakis
1
$bar = get_foo_ref();,这里的&不是必需的。 - user198729
@Manos Dilaverakis:我认为分享好东西永远不会是错误的。 - Young
@user198729:在这个例子中似乎是必要的。 - Young

11

只是一点小建议,这几乎从来没有好处。对象是通过引用传递的。这唯一可能有帮助的是数组(因此它们不会被复制),但好处微不足道,如果存在的话。 - ryeguy

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接