PHP5, PHP7에서 변수를 통해 함수/메서드 이름을 얻어 함수/메서드를 실행할 때 버전 간 해석 전략이 다르기 때문에 동일한 코드가 실행되지 않을 수 있습니다.
Example
$a = ['add', 'sub']; class Test { public function add() { echo 1 + 2; } } $t = new Test(); $t->$a[0]();
위 예제는 PHP5.6에서는 정상적으로 실행될 수 있지만 PHP7에서는 Fatal error: Function name must be a string이 발생합니다. 이는 $t->$a0 가 PHP5에서 실행될 때 $a[0] 이 먼저 실행되고 요소 값을 얻은 다음 특정 메소드를 가져오기 때문입니다. 개체의 실행됩니다.
PHP7에서는 $t->$a가 먼저 실행되어 오류가 발생하고 실행이 중단됩니다. PHP7에서 정상적으로 실행하려면 $t->{$a[0]}()로 수정해야 합니다.
구체적인 차이점은 다음을 참조하세요.
더 많은 프로그래밍 관련 콘텐츠를 보려면, PHP 중국어 홈페이지프로그래밍 소개 칼럼을 주목해주세요!
위 내용은 배열 요소를 동적 함수 이름으로 사용하는 것과 관련된 PHP5와 PHP7의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!