Home  >  Article  >  Backend Development  >  Detailed explanation of several examples of automatic loading methods of classes in PHP

Detailed explanation of several examples of automatic loading methods of classes in PHP

伊谢尔伦
伊谢尔伦Original
2017-07-01 10:03:011530browse

This article mainly introduces the method of automatically loading classes in PHP. Automatic loading of classes means that there is no need to "introduce" class files in external pages, but the program will dynamically load the required class files when needed.

Automatic loading of classes means that there is no need to "introduce" class files in external pages, but the program will dynamically load the required class files when needed.

Method 1: Use autoload magicFunction

When the program needs a certain class, it will call it Function, we need to define this function ourselves and write the general statement for loading class files in it.

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

Method 2: Use the spl_autoload_register function

The function of this function is to have more lives A function that can be used to replace the autoload function. The syntax is as follows: spl_autoload_regist("function name 1"); if spl_autoload_register is used, autoload will be invalid.

<?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,知道找到该类文件并加载
  ?>

Another example:

Here autoload is compatible with the following formats:

Cache_File_Json

class_xxx.php
xxx.class.php
xxx. php

php code is as follows:

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;
}

The above is the detailed content of Detailed explanation of several examples of automatic loading methods of classes in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn