PHP가 실행될 때 클래스를 사용해야 하는 경우(이 클래스와 관련된 작업인 경우) 현재 스크립트에는 이 클래스의 정의 코드가 없습니다! 그러면 PHP는 이때 자동으로 __autoload()라는 함수를 호출합니다! 그리고 호출 시 현재 필요한 클래스의 클래스 이름인 함수에 매개변수가 전달됩니다.
#自动加载 函数function __aotuload($class_name){ if(!file_exists("./".$class_name.".class.php")){ include "./".$class_name.".class.php"; }else{ die("系统错误,没有找到相关的类!"); } }
일반적으로 시스템의 자동 로딩 기능은 __autoload()입니다. 그러나 프로젝트가 확장됨에 따라 여러 개의 자동 로딩 기능이 나타날 수 있습니다. 함수가 등장하는데, 이때 함수명이 중복되는 문제가 발생합니다!
저희는 __autoload 기능을 전혀 사용하지 않고, 위와 같은 상황을 피하기 위해 사용자 고유의 자동 로딩 기능을 등록해두었습니다!
#注册其他的自动加载函数 解决自动加载函数重名问题function f1($class_name){ if(!file_exists("./".$class_name.".class.php")){ include "./".$class_name.".class.php"; }else{ die("系统错误,没有找到相关的类!"); } } spl_autoload_register('f1');
다음 사항에 주의해야 합니다.
1. 특정 수업이 필요하기 전에 등록이 이루어져야 합니다!
2. 여러 개의 자동 로딩 기능을 등록할 수 있습니다. 필수 클래스 파일이 성공적으로 로딩되기 전까지, 찾을 때까지 등록된 순서대로 실행됩니다!
3. 다른 자동 로딩 기능이 등록되면 시스템의 기본 __autoload 기능이 무효화됩니다!
이때, __autoload 기능을 계속 사용하시려면 다른 일반 기능과 마찬가지로 다시 등록하셔야 합니다!
객체 지향 프로그래밍 스타일에서는 일반적으로 사용자 정의 자동 로딩 기능을 클래스에 캡슐화합니다!
구문 형식은 다음과 같습니다.
spl_autoload_register(array('class name', 'method name'));
또한 정적 메서드를 등록하는 더 간단한 형식도 있습니다.
spl_autoload_register( ' 클래스 이름::메서드 이름');
이번 등록 단계는 다음과 같습니다.
1, 먼저 객체를 인스턴스화해야 합니다
2, 그런 다음 spl_autoload_register( )를 등록하는데, 이때 함수의 매개변수 형식은 다음과 같습니다.
spl_autoload_register(array(object Variable, 'method name'));
#注册自动加载方法class Common { public static function autoload($class_name){ if(!file_exists("./".$class_name.".class.php")){ include "./".$class_name.".class.php"; }else{ die("系统错误,没有找到相关的类!"); } } } //spl_autoload_register("Common::autoload"); spl_autoload_register(array("Common","autoload"));
관련 권장 사항:
PHP 단순 라우팅 및 클래스 구현 코드 자동 로딩 기능
위 내용은 PHP는 관련 기능의 자동 로딩을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!