이 기능을 이해하기 전에 __autoload라는 또 다른 기능을 살펴보겠습니다.
1.__autoload
PHP5에서는 정의되지 않은 클래스를 인스턴스화할 때 이 함수가 실행됩니다. 다음 예를 살펴보세요.
function __autoload( $class )
{ |
$file = $class . '.class.php' ; |
index.php 실행 후 안녕하세요. 월드가 정상적으로 출력됩니다. index.php에는 printit.class.php가 포함되어 있지 않기 때문에 printit을 인스턴스화할 때 자동으로 __autoload 함수가 호출되는데, $class 매개변수의 값은 클래스 이름인 printit이다. .
이 방법은 너무 많은 참조 파일을 작성하는 것을 방지하고 전체 시스템을 보다 유연하게 만들 수 있는 객체 지향에서 자주 사용됩니다.
2.spl_autoload_register()
spl_autoload_register()를 다시 살펴보세요. 이 함수는 __autoload와 동일한 효과를 갖습니다.
function loadprint( $class )
{ |
$file = $class . '.class.php' ; |
spl_autoload_register( 'loadprint' ); |
__autoload를 loadprint 함수로 바꿉니다. 그러나 loadprint는 __autoload처럼 자동으로 실행되지 않습니다. 이때 spl_autoload_register()는 정의되지 않은 클래스를 발견하면 PHP에 loadprint()를 실행하도록 지시합니다.
spl_autoload_register()는 정적 메소드를 호출합니다
public static function loadprint( $class )
{ |
$file = $class . '.class.php' ; |
spl_autoload_register(
array ( 'test' , 'loadprint' )
); |
//另一种写法:spl_autoload_register( "test::loadprint"
); |
이상으로 spl_autoload_register 함수에 대한 자세한 설명을 관련 내용을 포함하여 소개하였습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.