パラメータ処理機構の変更



1. 重複したパラメーターの名前付けはサポートされなくなりました。

重複したパラメータの名前付けはサポートされなくなりました。たとえば、次のコードを実行すると、エラーが報告されます。

public function foo($a, $b, $unused, $unused) {
          // ...
}
編集者注: このような使用はしないでください。

2. func_get_arg と func_get_args() の調整

2 つのメソッド func_get_arg() と func_get_args() は、渡されたときの値ではなく、パラメーターの現在の値を返します。現在の値は変更される可能性があります。

function foo($x) 
{
    $x++;
    var_dump(func_get_arg(0));
}
foo(1);
上記のコードでは、1 ではなく 2 が出力されます。元の値を出力したい場合は、呼び出しの順序を調整するだけです。

3. 変更された値は、例外トレースバック情報を出力するときにも表示されます。

function foo($x) 
{
    $x = 42;
    throw new Exception;
}
foo("string");

PHP7的运行结果:Stack trace:
#0 file.php(4): foo(42)
#1 {main}

PHP5的运行结果:Stack trace:
#0 file.php(4): foo('string')
#1 {main}
この調整はコードの動作には影響しませんが、デバッグ時にはこの変更に注意する必要があります。

debug_backtrace() など、パラメータに関連する他の関数も同様の調整の対象となります。