在PHP中通过引用传递(函数定义和变量)

时间:2016-01-08 13:47:25

标签: php reference

PHP中的function& foo()和function foo(& $ var)有什么区别?

代码示例:

<?php
function foo(&$var){
   $var++;
}

function &bar(){
   $a= 5;
   return $a;
}

foo( bar() );

1 个答案:

答案 0 :(得分:0)

这里的主要问题是谁想要改变或阅读其变量。 在第一个示例中,您希望函数更改外部变量。在示例二中,您希望外部世界更改内部变量。并且您可以从不同的范围获得更改的值。

第二个版本的更好用例是:

class example {
    public $test = 23;

    public function &exposeTest() {
        return $this->test;
    }
}

$example1 = new example;
$testref = &$example1->exposeTest();
$testref++;
echo($example1->test); // 24
$example1->test++;
echo($testref); // 25

因此除了设计问题之外并没有什么区别,没有OOP可能无关紧要。