7.4クラスの自動ロード
1117 ワード
2つの
しかし、1つのスクリプトファイルにスクリプトが多すぎると、少し重く見えます.
したがって、PHPはクラスの自動ロード技術を提供しています.原理は、インスタンス化されたときに、前置導入がなければ、もともとPHPはすぐにエラーを報告し、この
詳細については、公式に提供されているSPL標準ライブラリを参照してください.
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標準ライブラリを参照してください.