>  기사  >  백엔드 개발  >  배열 요소를 동적 함수 이름으로 사용하는 것과 관련된 PHP5와 PHP7의 차이점

배열 요소를 동적 함수 이름으로 사용하는 것과 관련된 PHP5와 PHP7의 차이점

藏色散人
藏色散人앞으로
2020-02-29 13:44:192289검색

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]}()로 수정해야 합니다.

구체적인 차이점은 다음을 참조하세요.

배열 요소를 동적 함수 이름으로 사용하는 것과 관련된 PHP5와 PHP7의 차이점

더 많은 프로그래밍 관련 콘텐츠를 보려면, PHP 중국어 홈페이지프로그래밍 소개 칼럼을 주목해주세요!

위 내용은 배열 요소를 동적 함수 이름으로 사용하는 것과 관련된 PHP5와 PHP7의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제