>  기사  >  백엔드 개발  >  PHP의 클래스 자동 로딩 방법에 대한 몇 가지 예에 대한 자세한 설명

PHP의 클래스 자동 로딩 방법에 대한 몇 가지 예에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-01 10:03:011531검색

이 글에서는 주로 PHP에서 클래스를 자동으로 로드하는 방법을 소개합니다. 클래스 자동 로드는 외부 페이지에 클래스 파일을 "소개"할 필요가 없지만 필요할 때 프로그램이 필요한 클래스 파일을 동적으로 로드한다는 의미입니다.

클래스 자동 로드는 외부 페이지에 클래스 파일을 "도입"할 필요가 없지만 필요할 때 프로그램이 필요한 클래스 파일을 동적으로 로드한다는 의미입니다.

방법 1: 자동 로드 마법 함수 사용

프로그램에 특정 클래스가 필요할 때 이 함수를 직접 정의하고 클래스 파일을 로드하기 위한 일반 명령문을 작성해야 합니다. 그것. .

<?php
    //需要类是自动调用,而且会传进来一个类名,这个案例的文件名为21A.class.php,类名为A
     function autoload($className){
      require "./21".$className.".class.php";
    }
    $o1 = new A();
    $o1->v1 = 10;
    echo "<br/>v1:".$o1->v1;
  ?>

방법 2: spl_autoload_register 함수 사용

이 함수의 함수는 자동 로드 함수를 대체하는 데 사용할 수 있는 여러 함수를 만드는 것입니다. 구문은 다음과 같습니다. 이름 1"); spl_autoload_register를 사용하는 경우 자동 로드가 유효하지 않습니다.

<?php
    //注册两个用于自动加载的函数名
    spl_autoload_register(&#39;auto1&#39;);
    spl_autoload_register(&#39;auto2&#39;);
    function auto1($className){
      $file = "./21".$className.".class.php";
      if(file_exists($file)){
        require "./21".$className.".class.php";
      }
    }
    function auto1($className){
      $file = "./22".$className.".class.php";
      if(file_exists($file)){
        require "./22".$className.".class.php";
      }
    }
    //如果需要一个雷,但这个页面还没有记载,就会依次调用auto1和auto2,知道找到该类文件并加载
  ?>

또 다른 예:

여기 자동 로드는 다음 형식과 호환됩니다.

Cache_File_Json

class_xxx.php
xxx.class.php
xxx.php

php 코드는 다음과 같습니다.

function autoload($className){
 $dirs=explode(&#39;_&#39;,$className);
 $fileName=array_pop($dirs);
 //print_r($dirs);
 $filePath=$fileName;
 if(is_array($dirs) && (count($dirs) > 0)){
  //echo &#39;\n---\n&#39;; print_r($dirs);
  $dirPath=&#39;&#39;;
  foreach ($dirs as $dir){
   if($dir){
    $dirPath.=strtolower($dir).DIRECTORY_SEPARATOR;
   }
  }
  $filePath=$dirPath.$fileName.&#39;.php&#39;;
 }else {
  if( file_exists(&#39;class_&#39;.$fileName.&#39;.php&#39;)){
   $filePath=&#39;class_&#39;.$fileName.&#39;.php&#39;;
  }else {
   if( file_exists($fileName.&#39;.class.php&#39;)){
    $filePath=$fileName.&#39;.class.php&#39;;
   } else {
    $filePath=$fileName.&#39;.php&#39;;
   }
  }
 }
 //var_dump($filePath);
 require $filePath;
}

위 내용은 PHP의 클래스 자동 로딩 방법에 대한 몇 가지 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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