>백엔드 개발 >PHP 문제 >php __autoload가 실패하면 어떻게 해야 할까요?

php __autoload가 실패하면 어떻게 해야 할까요?

藏色散人
藏色散人원래의
2021-09-14 10:43:192459검색

php __autoload는 spl_autoload_register 함수가 Zend Engine의 __autoload 함수를 spl_autoload로 대체하기 때문에 실패합니다. 해결 방법은 __autoload 함수를 다시 등록하는 것입니다.

php __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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.