ホームページ  >  記事  >  バックエンド開発  >  PHPにおけるクラスの自動ロード方法のいくつかの例の詳細な説明

PHPにおけるクラスの自動ロード方法のいくつかの例の詳細な説明

伊谢尔伦
伊谢尔伦オリジナル
2017-07-01 10:03:011578ブラウズ

この記事では主にPHPでクラスを自動で読み込む方法を紹介します。クラスの自動ロードは、外部ページにクラス ファイルを「導入」する必要がないことを意味しますが、プログラムは必要に応じて必要なクラス ファイルを動的にロードします。

クラスの自動ロードは、外部ページにクラス ファイルを「導入」する必要がないことを意味しますが、プログラムは必要に応じて必要なクラス ファイルを動的にロードします。

方法 1: autoload マジック 関数を使用する

プログラムが特定のクラスを必要とする場合、この関数を自分で定義し、クラス ファイルをロードするための一般的なステートメントを記述する必要があります。それ。 。

<?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 関数を使用する

この関数の機能は、autoload 関数の置き換えに使用できる複数の関数を作成することです。構文は次のとおりです。 spl_autoload_regist("function. name 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。