1

根据文档,当您使用“调用时传递引用”时,将抛出E_DEPRECATED

但是,当我在命令行中运行以下代码时,没有错误或任何警告。

<?php

error_reporting(E_ALL);

echo PHP_VERSION, "\n"; // print 5.3.10-1ubuntu2ppa6~lucid

function test($string)
{
    $string = 'bar';
}

$a = 'foo';
test(&$a);
echo $a; // print bar
4

2 回答 2

3

错误消息是编译时错误。error_reporting()您正在使用在已经产生错误后执行的函数在运行时设置 error_reporting 级别。

最好的办法是设置error_levelin php.ini。如果你不能这样做,这意味着你应该设置一个本地开发环境,因为这个错误级别不应该显示在生产系统上。

也可以将其拆分为多个文件,例如

一个.php:

<?php
error_reporting(-1);
include 'b.php';
?>

b.php:

<?php
/* ... */ 
test(&a);
/*... */
?>

此后error_reportinga.php 中的 in 将在 b.php 编译之前执行。

于 2013-04-28T09:24:40.183 回答
0

因为在您的 php.ini 文件中allow_call_time_pass_reference设置为。true设置为false获取错误。

编辑:是的,你说得对,我检查了 V5.2.9,它会抛出警告,它应该在 V5.3.x 根据文档但它没有。似乎这是一个错误

于 2013-04-28T08:33:50.793 回答