変数ハンドリング機構の変更
PHP7 バージョンでは、変数解析メカニズムが調整されました。調整内容は次のとおりです:
1. 間接変数、属性、メソッド参照は左から右に解釈されます:
$$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']()
説明の順序を変更したい場合は、中括弧を使用できます:
${$foo['bar']['baz']} $foo->{$bar['baz']} $foo->{$bar['baz']}() Foo::{$bar['baz']}()
2. 現在、グローバル キーワードは単純な変数のみを参照できます
global $$foo->bar; // 这种写法不支持。 global ${$foo->bar}; // 需用大括号来达到效果。
3. 括弧を使用して、変数や関数を囲むことは役に立ちません。
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 reference2 番目の文の呼び出しは括弧で囲まれていますが、この厳密なエラーは引き続き報告されることに注意してください。以前のバージョンの PHP では、このエラーは報告されません。