PHP从java借用了大部分面向对象的功能。我想知道PHP和java是否都使用相同的pass by值概念?
我知道Java不是通过引用传递的。它只是通过值传递对象引用。 PHP怎么样? PHP支持是否通过引用传递?
答案 0 :(得分:3)
在PHP中,如果你声明一个函数并将其与&符号一起乱丢,你只能通过引用传递东西:
function &return_by_reference() {
$something = make_something();
return $something;
}
function increment(&$n) {
// This changes $n because it is a reference parameter
$n++;
}
还有调用时间传递引用(即当你调用函数时通过引用传递变量),但是我不会继续讨论它,因为它会带来意外的风险行为。最好在函数签名中声明要通过引用传递的参数。
对于对象:在PHP 4中,对象都是按值传递的。在PHP 5中,对象的引用按值传递,就像在Java中一样。