gpt4 book ai didi

PHP4参数通过引用?

转载 作者:行者123 更新时间:2023-12-04 06:24:34 25 4
gpt4 key购买 nike

我已经很习惯 PHP5 但必须编写一个 PHP4 同步脚本,现在我正在做一些挖掘以找到 PHP5 和 4 之间的差异。问题是我遇到了很多矛盾,有些网站告诉我 PHP4 没有 byref无论什么和其他人告诉我这个问题只在使用 foreach 时发生..

澄清一个例子:

function doSomething()
{
$aMyAr = array();
$oUser = new User();

addUser($aMyAr, $oUser);
}

function addUser($aDestArray, $oUser)
{
$aMyAr[] = $oUser;
}

我知道你会想为什么不自己运行这个脚本并 echo/print_r 输出?好吧,由于某些原因,PHP4 无法在最新的 WAMP/XAMPP 中运行(是的,我尝试了一堆据说兼容的 apache 版本......)

最佳答案

变化只是,在 PHP4 中,对象默认被复制,而在 PHP5 中,它们默认被视为引用。 IE。:

$a = new stdClass();
$a->prop = "original";
$b = $a;

$b->prop = "changed";
echo $a->prop;

# PHP4 outputs "original" because $a and $b are different objects
# PHP5 outputs "changed" because $a and $b are the same object

当您进行函数调用或使用 foreach 时,在 PHP4 中对象被复制而不是通过引用传递。

要使 PHP4 函数参数像 PHP5 一样运行,您只需要显式 pass function arguments by reference , IE。:
function someFunc(& $someObject) {
$someObject->prop = "changed";
}

someFunc($a);
echo $a->prop; # prints "changed"

所以,PHP4 面向对象的代码最终散落着 &到处都是(在当天编写真正的 OO 代码,这很烦人!)。

另一个例子是通过引用分配。 $b =& $a PHP4 中的对象做了什么简单的 $b = $a在 PHP5 中做。

最后,通过引用返回。如果您在函数内创建一个对象并希望返回它(而不是返回它的副本),则必须使用 & 定义该函数。 ,即 function &someFunc() {} .

再次, PHP docs解释语法。到目前为止最好的做法就是不要使用 PHP4!

关于PHP4参数通过引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6193352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com