>백엔드 개발 >PHP 튜토리얼 >PHP 객체지향 자동 로딩 메커니즘 원리 및 사용법

PHP 객체지향 자동 로딩 메커니즘 원리 및 사용법

墨辰丷
墨辰丷원래의
2018-06-01 09:29:251489검색

이 글은 주로 PHP의 객체지향 자동 로딩 메커니즘의 원리와 사용법을 소개하며, PHP의 객체지향 자동 로딩 메커니즘의 원리와 관련 기능, 주의사항을 예제 형식으로 분석합니다.

PHP의 방향을 배우면서 객체로 작업할 때 "syntax sugar", 즉 매직 메소드를 많이 알게 됩니다. 자동 로딩을 추가하는 마법의 메소드가 있습니다: __autoload();

먼저 코드를 살펴보세요

<?php
function __autoload($classname) {
  $filename = "./". $classname .".php";
  include_once($filename);
}
new a();

여기서 클래스 A가 인스턴스화되지만 클래스 A와 관련된 코드는 없습니다. 코드블럭을 눌러보세요. 해당 클래스 A가 없기 때문에 에러를 보고해야 한다는 것이 상식이지만, autoload() 자동 로딩 기능을 사용하면 결과가 달라질 수 있습니다

위의 흐름도에서 : 페이지에서 하나를 인스턴스화합니다. 새 클래스의 경우 먼저 현재 디렉터리에서 해당 클래스 코드를 찾습니다. 존재하지 않으면 자동 로드 스택으로 이동하여 해당 자동 로딩 기능을 찾습니다. , 자동으로 클래스를 로드합니다. 그렇지 않으면 오류가 발생합니다.

이것은 PHP 자동 로딩 메커니즘입니다. 그러면 초점은 뒤쪽에 있습니다. 자동 로드된 기능이 여러 개 있으면 어떻게 되나요?

PHP는 SPL 기능을 제공합니다

spl_autoload_register(); // 注册autoload函数

공식: 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(&#39;PHPExcel_Autoloader&#39;,&#39;Load&#39;)),$functions);
    foreach ( $functions as $function)
      $x = spl_autoload_register($function);
    return $x;
}

PHPWord 자동 로딩 방법

public static function Register() {
  return spl_autoload_register(array(&#39;PHPWord_Autoloader&#39;, &#39;Load&#39;));
}

이 두 가지 방법을 사용하여 자동 로딩을 재정의할 수 있지만 차이점이 있습니까? 코드가 독립적으로 실행되는 경우 두 경우 모두 실행될 수 있지만 YII 프레임워크와 같은 프레임워크에 통합된 경우입니다. 그러면 PHPWord의 자동 로딩이 유효하지 않습니다.

YII 프레임워크에는 자동 로딩 기능이 자동으로 제공되고 코드가 실행될 때 이미 등록되어 있으며 spl_autoload_register()는 자동 로드 대기열 뒤에 새로운 자동 로딩 기능을 로드하기 때문입니다. 모든 PHPWord가 실행 중일 때 YII 프레임워크에서 정의한 자동 로딩 메커니즘을 호출하며 이는 PHPWord의 로딩 방법이 아닙니다.

그래서 PHPexecl의 로딩 기능을 보시면 이해가 되실 겁니다.

요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

관련 권장 사항:

기본 DOM 개체 조작 XML을 구현하는 PHP 방법


phpWeChat 결제의 환불 기능 구현

phpAlipay 시리즈 컴퓨터 웹사이트 결제

위 내용은 PHP 객체지향 자동 로딩 메커니즘 원리 및 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.