PHP開発中、外部からクラスを導入したい場合、通常はincludeメソッドやrequireメソッドを使用してクラスを定義したファイルをインクルードしますが、これにより誤ってincludeメソッドやrequireメソッドが大量に呼び出されてしまう可能性があります。 、エラーが発生し、コードの保守が困難になります。
PHP5 以降、クラス ファイルへの参照を自動的に含めることができる __autoload インターセプター メソッドが導入されました。通常は次のように記述します。
コードをコピー コードは次のとおりです。
function __autoload($className) {
include_once $className .
}
$ user = new User();
コードをコピーします コードは次のとおりです:
//ロードしてください
function __autoload($className) {
$file = str_replace('_', DIRECTORY_SEPARATOR, $className);
include_once $ file . 'php';
$userRegister = new User_Register();
コードをコピーします コードは次のとおりです:
//ロードしないでください
function __autoload( $className) {
include_once $className . '.class.php';
}
//ロードしてください
function autoload($className) {
$file = str_replace('/' , DIRECTORY_SEPARATOR, $className);
include_once $file .
}
//読み込み開始
spl_autoload_register('autoload'); = new User_Register() ;
//システムのデフォルトの __autoload 関数 function __autoload($className) { include_once $className .class .php' ; }
//__SPL ロード用の autoload 関数function autoload($className) {
$file = str_replace('_', DIRECTORY_SEPARATOR, $className); $file . '.php';
}
//間違った関数名をロードし、同時にデフォルトの __autoload メカニズムをキャンセルしました...囧
spl_autoload_register('_autoload', false);
//フォールトトレランスメカニズム
if(false === spl_autoload_functions()) {
if(function_exists('__autoload')) {
spl_autoload_register('__autoload', false); }
}
奇妙なトリック: Unix/Linux 環境で、管理の便宜上、複数の小さなクラスがある場合、それらをすべて php ファイルに記述すると、次のようになります。 ln -s コマンドを使用してソフト リンクを作成し、異なるクラス名を持つ複数のコピーにすばやく配布し、自動ロード メカニズムを通じてロードします。