Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP 자동 로딩 클래스

<시간/>

소개

다른 PHP 스크립트에 정의된 클래스를 사용하기 위해 include 또는 require 문과 통합할 수 있습니다. 그러나 PHP의 자동 로딩 기능은 그러한 명시적 포함을 필요로 하지 않습니다. 대신, 클래스가 사용될 때(객체 선언 등) PHP 파서는 spl_autoload_register()로 등록된 경우 자동으로 로드합니다. 기능. 따라서 원하는 수의 클래스를 등록할 수 있습니다. 이렇게 하면 PHP 파서는 오류를 발생시키기 전에 클래스/인터페이스를 로드할 마지막 기회를 얻습니다.

구문

spl_autoload_register(function ($class_name) {
   include $class_name . '.php';
});

클래스는 처음 사용할 때 해당 .php 파일에서 로드됩니다.

자동 로딩 예시

이 예는 클래스가 자동 로드를 위해 등록되는 방법을 보여줍니다.

예시

<?php
spl_autoload_register(function ($class_name) {
   include $class_name . '.php';
});
$obj = new test1();
$obj2 = new test2();
echo "objects of test1 and test2 class created successfully";
?>

출력

그러면 다음과 같은 결과가 생성됩니다. -

objects of test1 and test2 class created successfully

단, 클래스 정의가 있는 해당 .php 파일이 없으면 다음과 같은 에러가 출력됩니다.

Warning: include(): Failed opening 'test10.php' for inclusion (include_path='C:\xampp\php\PEAR') in line 4
PHP Fatal error: Uncaught Error: Class 'test10' not found

예외 처리로 자동 로드

예시

<?php
spl_autoload_register(function($className) {
   $file = $className . '.php';
   if (file_exists($file)) {
      echo "$file included\n";
      include $file;
   } else {
      throw new Exception("Unable to load $className.");
   }
});
try {
   $obj1 = new test1();
   $obj2 = new test10();
} catch (Exception $e) {
   echo $e->getMessage(), "\n";
}
?>

출력

그러면 다음과 같은 결과가 생성됩니다. -

Unable to load test1.