Pengubahsuaian mekanisme pemprosesan parameter



1. Penamaan parameter pendua tidak lagi disokong.

Penamaan parameter pendua tidak lagi disokong. Sebagai contoh, kod berikut akan melaporkan ralat apabila dilaksanakan:

public function foo($a, $b, $unused, $unused) {
          // ...
}
Nota editor: Tiada siapa yang harus menggunakannya seperti ini.

2 Pelarasan kepada kaedah func_get_arg dan func_get_args()

func_get_arg() dan func_get_args() mengembalikan nilai semasa parameter, bukan nilai apabila dihantar masuk. Nilai semasa boleh diubah suai

function foo($x) 
{
    $x++;
    var_dump(func_get_arg(0));
}
foo(1);
Kod di atas akan mencetak 2 bukannya 1. Jika anda ingin mencetak nilai asal, laraskan sahaja susunan panggilan.

3 Apabila mencetak maklumat jejak balik pengecualian, nilai yang diubah suai juga dipaparkan.

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}
Pelarasan ini tidak akan menjejaskan kelakuan kod, tetapi anda perlu memberi perhatian kepada perubahan ini semasa menyahpepijat.

Fungsi lain yang berkaitan dengan parameter tertakluk kepada pelarasan yang sama, seperti debug_backtrace().