phpの自動ロード(怠け者ロード)

3400 ワード

AクラスとBクラスがあり、AクラスでBクラスをインスタンス化する場合、最も簡単で直接的な方法はBでinclude require_を使用することです.once Aのファイルですが、この方法は明らかに友好的ではありません.フレームの中ではそうではありません.フレームの中で自動ロードを使用するメカニズムも怠惰ロードになります.
phpでの自動ロードspl_の使用autoload_registerはクラスが指定されていない場合に自動的にロードされる動作を完了します.この方法ではnewのクラスの前に、このクラスのファイルが導入されていなくても、指定されたクラスを正しく初期化することができます.これにより、include require_を使用する必要はありません.onceはファイルを導入しますが、実はこの方法はincludeメソッドのパッケージであり、同時に自分で実現する必要があります.次は?を挙げます.その原理を説明します
次はautolodです.phpのソース:
 1 php
 2 spl_autoload_register(array('autoload','load'));
 3 class autoload{
 4     public static function load($classnName){
 5         if ( !class_exists($classnName) ) {
 6             $file = $classnName.'.php';
 7             require_once('./'.$file);
 8 
 9         }
10     }
11 }
12 $class = new autoload_test();
13 $class->test();

次はautolod_test.phpのソース:
1 php
2 class autoload_test{
3     function test(){
4         echo 'this is test';
5     }
6 }

コードは簡単ですがspl_を説明するのに十分ですautoload_registerが自動的にロードするメカニズムで、コード実行中にnewに含まれていないクラスがある場合、phpはspl_を実行します.autoload_registerの最初のパラメータはnewのクラス名が必要で、この関数の機能は導入されていないクラスを導入することですが、クラスの名前とファイルの名前が一致することが前提で、自動ロードの機能を実現するのは簡単ではありません.
    spl_autoload_registerこの方法にはもう一つの一般的な呼び出し方法spl_があります.autoload_register(array($className,$functionName));指定したクラスの静的メソッドを使用して自動ロードを完了し、静的メソッドの構造はautoloadの論理を完了することです.
転載先:https://www.cnblogs.com/zzq919101/p/10458106.html