PHP调用时间传递引用显示没有E_DEPRECATED

时间:2013-04-28 08:16:43

标签: php reference porting

根据the doc,当您使用“来电时间传递”

时, 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

2 个答案:

答案 0 :(得分:3)

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

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

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

a.php只会:

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

b.php:

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

从那以后,a.php中的error_reporting将在b.php编译之前执行。

答案 1 :(得分:0)

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

编辑:是的,你是对的,我用V5.2.9进行了检查并且它会发出警告,它应该是V5.3.x的文件,但事实并非如此。好像这是一个错误