>  기사  >  백엔드 개발  >  PHP 함수 __autoload 실패 이유(smarty 관련)

PHP 함수 __autoload 실패 이유(smarty 관련)

WBOY
WBOY원래의
2016-07-29 09:16:121054검색

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() 대기열에 명시적으로 등록되어야 합니다. 왜냐하면 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 함수 __autoload(smarty 관련)의 실패 이유를 관련 내용을 포함하여 소개하고 있으니, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.

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