php의 자동 로딩:
php5 이전에는 특정 클래스나 클래스 메소드를 사용하려면 클래스를 사용할 때마다 include 또는 require를 수행해야 했습니다. include 작성, 문제
PHP 작성자는 클래스를 참조하는 것이 가장 좋습니다. 현재 include가 없으면 시스템이 자동으로 클래스를 찾아 자동으로 소개합니다~
그래서: autoload () 기능이 생겼습니다.
일반적으로 discuz와 같은 애플리케이션 항목 클래스에 배치되며 class_core.php에 배치됩니다.
먼저 간단한 예를 들어보겠습니다.
첫 번째 경우: A.php 파일의 내용은 다음과 같습니다.
<?php class A{ public function construct(){ echo 'fff'; } } ?>
C.php 파일의 내용은 다음과 같습니다.
<?php function autoload($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } $a = new A(); //这边会自动调用autoload,引入A.php文件 ?>
두 번째 경우: 때로는 자동 로드를 정의하고 더 멋진 이름 로더를 제공하고 싶은 경우 C.php를 다음과 같이 변경합니다.
<?php function loader($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } spl_autoload_register('loader'); //注册一个自动加载方法,覆盖原有的autoload $a = new A(); ?>
세 번째 경우: 좀 더 발전하고 클래스를 사용하고 싶습니다. 자동 로딩을 관리하는
<?php class Loader { public static function loadClass($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } } spl_autoload_register(array('Loader', 'loadClass')); $a = new A(); ?>
현재 가장 좋은 형태입니다.
보통은 입력 스크립트에 spl_autoload_register(*)를 넣습니다. 즉, 처음부터 인용합니다. 예를 들어 아래의 discuz 방법을 참조하세요.
if(function_exist('spl_autoload_register')){ spl_autoload_register(array('core','autoload')); //如果是php5以上,存在注册函数,则注册自己写的core类中的autoload为自动加载函数 }else{ function autoload($class){ //如果不是,则重写php原生函数autoload函数,让其调用自己的core中函数。 return core::autoload($class); } }
이 문단은 입력파일 맨 앞에 위치하는데, 자연스럽게 우수하네요~
위 내용은 PHP 자동로드 클래스 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!