php __autoload는 spl_autoload_register 함수가 Zend Engine의 __autoload 함수를 spl_autoload로 대체하기 때문에 실패합니다. 해결 방법은 __autoload 함수를 다시 등록하는 것입니다.
이 기사의 운영 환경: windows7 시스템, PHP7.1 버전, DELL G3 컴퓨터
__autoload가 실패하면 어떻게 해야 합니까?
PHP 함수 __autoload(smarty 관련) 실패 이유
PHP 함수 __autoload는 간단한 자동 로딩이 가능하지만, smarty 도입 이후 __autoload 함수가 유효하지 않다는 사실이 밝혀졌고, 나중에 그것이 spl_autoload_register 함수 때문이라는 것이 밝혀졌습니다.
다음 코드를 실행합니다.
function __autoload($name) { require 'class/'.$name.'.php'; echo '1'; } function autoload_test($name) { echo '2'; } spl_autoload_register('autoload_test'); $ca=new Ca();
결과는 2입니다. __autoload 함수가 실행되지 않은 것을 확인할 수 있습니다. 공식 웹사이트의 분석은 다음과 같습니다. 프로그램에 __autoload() 함수가 구현되어 있으면 반드시 _ _autoload() 대기열에 명시적으로 등록되었습니다. 왜냐하면 spl_autoload_register() 함수는 Zend 엔진의 __autoload() 함수를 spl_autoload() 또는 spl_autoload_call()로 대체하기 때문입니다.
코드가 제대로 작동하려면 __autoload 함수를 다시 등록해야 합니다:
function __autoload($name) { require 'class/'.$name.'.php'; echo '1'; } function autoload_test($name) { echo '2'; } spl_autoload_register('autoload_test'); spl_autoload_register('__autoload'); $ca=new Ca();
권장 학습: "PHP 비디오 튜토리얼"
위 내용은 php __autoload가 실패하면 어떻게 해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!