1

ドキュメントによると、 「call-time pass-by-reference」を使用すると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_levelです php.ini。それができない場合は、ローカル開発環境をセットアップする必要があることを意味します。このエラー レベルは、運用システムでは表示されないはずです。

また、複数のファイルに分割することもできます。

a.php:

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

b.php:

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

それ以降、error_reportinga.php は 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 に答える