Pengubahsuaian mekanisme pengendalian boleh ubah
Versi PHP7 telah membuat pelarasan pada mekanisme parsing pembolehubah Pelarasan adalah seperti berikut:
1 Pembolehubah tidak langsung, atribut dan rujukan kaedah ditafsirkan dari kiri ke kanan:
$$foo['bar']['baz'] // interpreted as ($$foo)['bar']['baz'] $foo->$bar['baz'] // interpreted as ($foo->$bar)['baz'] $foo->$bar['baz']() // interpreted as ($foo->$bar)['baz']() Foo::$bar['baz']() // interpreted as (Foo::$bar)['baz']()
Jika anda ingin menukar susunan. tafsiran, anda boleh menggunakan Braces:
${$foo['bar']['baz']} $foo->{$bar['baz']} $foo->{$bar['baz']}() Foo::{$bar['baz']}()
2. Kata kunci global kini hanya boleh merujuk kepada pembolehubah mudah
global $$foo->bar; // 这种写法不支持。 global ${$foo->bar}; // 需用大括号来达到效果。
3. Ia tidak lagi berguna untuk menggunakan kurungan untuk melampirkan pembolehubah atau fungsi
function getArray() { return [1, 2, 3]; } $last = array_pop(getArray()); // Strict Standards: Only variables should be passed by reference $last = array_pop((getArray())); // Strict Standards: Only variables should be passed by referencePerhatikan bahawa panggilan dalam kedua ayat disertakan dalam kurungan, tetapi masih melaporkan ralat yang ketat ini. Versi PHP sebelumnya tidak akan melaporkan ralat ini.
4 Susunan elemen tatasusunan atau atribut objek yang dibuat secara automatik semasa tugasan rujukan adalah berbeza daripada sebelumnya.
$array = []; $array["a"] =& $array["b"]; $array["b"] = 1; var_dump($array); PHP7产生的数组:["a" => 1, "b" => 1] PHP5产生的数组:["b" => 1, "a" => 1]