Maison  >  Article  >  développement back-end  >  Explication détaillée de plusieurs exemples de méthodes de chargement automatique de classes en PHP

Explication détaillée de plusieurs exemples de méthodes de chargement automatique de classes en PHP

伊谢尔伦
伊谢尔伦original
2017-07-01 10:03:011595parcourir

Cet article présente principalement la méthode de chargement automatique de la classe en PHP. Le chargement automatique des classes signifie qu'il n'est pas nécessaire « d'introduire » les fichiers de classe dans les pages externes, mais le programme chargera dynamiquement les fichiers de classe requis en cas de besoin.

Le chargement automatique des classes signifie qu'il n'est pas nécessaire "d'introduire" les fichiers de classe dans les pages externes, mais le programme chargera dynamiquement les fichiers de classe requis en cas de besoin.

Méthode 1 : Utilisez la fonction magique de chargement automatique

Lorsque le programme a besoin d'une certaine classe, il l'appellera Fonction, nous devons définir cette fonction nous-mêmes et écrire l'instruction générale pour y charger les fichiers de classe.

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

Méthode 2 : Utilisez la fonction spl_autoload_register

La fonction de ceci function is Il existe plusieurs fonctions qui peuvent être utilisées pour remplacer la fonction de chargement automatique. La syntaxe est la suivante : spl_autoload_regist("function name 1"); si spl_autoload_register est utilisé, le chargement automatique ne sera pas valide.

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

Autre exemple :

Ici le chargement automatique est compatible avec les formats suivants :

Cache_File_Json
class_xxx.php
xxx.class.php
xxx.php

le code php est le suivant :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn