7.4クラスの自動ロード

1117 ワード

2つのclassクラスがそれぞれ2つのスクリプトファイルに対応している場合、双方は自分のファイルの中で勝手に別のクラスを呼び出すことができず、includeまたはrequireによって導入されてからインスタンス化する必要がある.
しかし、1つのスクリプトファイルにスクリプトが多すぎると、少し重く見えます.
したがって、PHPはクラスの自動ロード技術を提供しています.原理は、インスタンス化されたときに、前置導入がなければ、もともとPHPはすぐにエラーを報告し、このclassクラスが見つからないことを提示しますが、現在の環境でspl_autoload_registerなどの関数を処理したことがあるかどうかを調べる機会を提供しています.もしあれば、まずクラス名などの情報を捨ててみて、このエラーをうまく処理すれば、無事で、そうでなければエラーを報告します.
//       
spl_autoload_register(function($className){
    //      ,    /
    $opt = DIRECTORY_SEPARATOR;
    //     
    $path = __DIR__.$opt.'vendor'.$opt.'demo'.$opt.strtolower($className).".class.php";
    //     
    echo "

$path

"; // require_once($path); }); // $date = new Date(); // var_dump($date); // $math = new Math(); // var_dump($math);
spl_autoload_register()関数のパラメータはコールバック関数で、このコールバック関数で参照せずに直接呼び出されたクラス名を得ることができ、このクラス名に基づいて対応するパスを見つけ、requireを使用して導入すると、クラス名が見つからない異常なエラーを解決することができます.
詳細については、公式に提供されているSPL標準ライブラリを参照してください.