이 글에서는 주로 PHP 객체지향자동 로딩 메커니즘의 원리와 사용법을 소개합니다. PHP 객체지향 자동 로딩 메커니즘의 원리와 관련 기능, 주의사항을 예제 형식으로 분석합니다. 이 기사를 참조하세요
예제에서는 PHP의 객체 지향 자동 로딩 메커니즘의 원리와 사용법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
PHP의 객체 지향 접근 방식을 배우면 마법의 방법인 "구문 설탕"을 많이 알게 됩니다. 자동 로딩을 추가하는 마법의 메소드가 있습니다: autoload();
먼저 코드를 살펴보세요
<?php function autoload($classname) { $filename = "./". $classname .".php"; include_once($filename); } new a();
여기서 클래스 A가 인스턴스화되지만 코드 블록에는 클래스 A와 관련된 코드가 없습니다. 상식적으로는 해당 클래스 A를 찾을 수 없기 때문에 에러를 보고해야 하는데, autoload() 자동 로딩 기능을 사용하면 결과가 다를 수 있습니다
위의 흐름도에서: 인스턴스화 먼저 현재 디렉터리에서 해당 클래스 코드를 찾습니다. 존재하지 않으면 자동 로드 스택으로 이동하여 해당 자동 로드 기능을 찾습니다. 클래스가 아니면 오류가 발생합니다.
이것은 PHP 자동 로딩 메커니즘입니다. 그러면 초점은 뒤쪽에 있습니다. 자동 로드된 기능이 여러 개 있으면 어떻게 되나요?
PHP는
클래스의 자동 로딩을 구현하는 보다 유연한 방법을 제공하는 SPL 함수spl_autoload_register(); // 注册autoload函数
official: spl_autoload_register()를 제공합니다. 따라서 autoload() 함수의 사용은 더 이상 권장되지 않으며 향후 버전에서는 더 이상 사용되지 않을 수 있습니다.
그러나 이 기능은 PHPexecl과 PHPWord 모두에서 자동 로딩을 위해 사용되는데 둘 사이에는 차이점이 있습니다! !
PHPexecl 자동 로딩 방법 (여기 작성자는 아마도 Python 엔지니어일 것입니다. 그렇지 않으면 중괄호가 없고 들여쓰기로 표현됩니다)
public static function Register() { $functions = spl_autoload_functions(); foreach ( $functions as $function) spl_autoload_unregister($function); $functions = array_merge(array(array('PHPExcel_Autoloader','Load')),$functions); foreach ( $functions as $function) $x = spl_autoload_register($function); return $x; }
PHPWord 자동 로딩 방법
public static function Register() { return spl_autoload_register(array('PHPWord_Autoloader', 'Load')); }
두 방법 모두 자동 재정의를 완료할 수 있습니다. , 하지만 차이점이 있나요? 코드가 독립적으로 실행되는 경우 두 경우 모두 실행될 수 있지만 YII 프레임워크와 같은 프레임워크에 통합된 경우입니다. 그러면 PHPWord의 자동 로딩이 유효하지 않습니다.
YII 프레임워크에는 자동 로딩 기능이 자동으로 제공되고 코드가 실행될 때 이미 등록되어 있으며 spl_autoload_register()는 자동 로드 대기열 뒤에 새로운 자동 로딩 기능을 로드하기 때문입니다. 모든 PHPWord가 실행 중일 때 YII 프레임워크에서 정의한 자동 로딩 메커니즘을 호출하며 이는 PHPWord의 로딩 방법이 아닙니다.
그래서 PHPexecl의 로딩 기능을 보시면 이해가 되실 겁니다.
위 내용은 PHP 자동 로딩 메커니즘 정의 및 사용 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!