가변 핸들링 메커니즘 수정
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 reference
두 번째 문장의 호출은 괄호로 묶여 있지만 이 엄격한 오류는 여전히 보고됩니다. 이전 버전의 PHP에서는 이 오류를 보고하지 않았습니다.
4. 참조 할당 시 자동으로 생성되는 배열 요소 또는 객체 속성의 순서가 이전과 다릅니다.
$array = []; $array["a"] =& $array["b"]; $array["b"] = 1; var_dump($array); PHP7产生的数组:["a" => 1, "b" => 1] PHP5产生的数组:["b" => 1, "a" => 1]