Derick Rethans 有一篇旧文章说:
请注意,不接受来自返回引用的函数的引用是有害的。在某些情况下,PHP 会感到困惑并导致很难找到和调试的内存损坏。返回静态值作为引用也不是一个好主意,因为 PHP 引擎也有问题。在 PHP 4.3 中,这两种情况都可能导致很难重现 PHP 和 Web 服务器的错误和崩溃。在 PHP 5 中,这一切都好一点。在这里你可以期待一个警告,它会表现得“正常”。
这是否意味着在 PHP 5 中我们可以忽略函数返回的引用?
我的意思是:
function &GetRef(&$array){
$item =& $array[0];
return $item;
}
$array = array(0, 1, 2);
$item =& GetRef($array); /* Normal usage of the function using assign by reference
also known as "accepting" the reference. */
$item = GetRef($array); /* Notice that here we didn't assign by reference.
Are we allowed to ignore the returned reference
and simply do normal assignment? */
PHP手册指出:
与参数传递不同,这里 [return by reference] 您必须在两个地方都使用 & - 表示您希望通过引用而不是副本返回,并指示应该为 $ 完成引用绑定而不是通常的赋值我的价值。
它没有明确说我们必须接受返回的引用。
这是否意味着我们可以随意忽略返回的引用?