こんにちは、私たち自身の名前の自動ロードを使用できることを除いて、これを使用する違いはありますか?パフォーマンスに違いはありますか?それらは内部でどのように機能しますか?
の間に
function __autoload_libraries($class){
include_once 'lib.'.$class.'.php';
}
spl_autoload_register('__autoload_libraries');
vs
function __autoload($class){
include_once 'lib.'.$class.'.php';
}
__autoload
は一般的に廃止されたと見なされます。オートローダーは1つしか使用できません。通常、__autoload
をサポートせずにPHPのバージョンを使用している場合は、spl_autload_register
のみを使用する必要があります。
spl_autoload_register
を使用すると、複数のオートローダーを登録できます。これらのオートローダーは、一致するクラス/インターフェース/トレイトが見つかってロードされるまで、またはすべてのオートロードオプションが使い果たされるまで順番に実行されます。つまり、独自のオートローダーを実装するフレームワークコードやその他のサードパーティライブラリを使用している場合は、競合が発生することを心配する必要はありません。
__autoload
はPHP 7.2.0で正式に非推奨になりました。これは、現在、チョッピングブロックにあることを意味します。コードをPHPの将来のバージョンと互換性を持たせたい場合は、__autoload
を使用しないでください。
「クラスの自動読み込み」のドキュメント 読み取り:
spl_autoload_register()は、クラスを自動ロードするためのより柔軟な代替手段を提供します。このため、__ autoload()の使用は推奨されておらず、将来的に非推奨または削除される可能性があります。
spl_autoload_register()のドキュメント 読み取り:
複数の自動ロード関数が必要な場合、spl_autoload_register()はこれを可能にします。自動ロード関数のキューを効果的に作成し、定義された順序で各関数を実行します。対照的に、__ autoload()は一度だけ定義できます。