http://php.net/manual/en/language.oop5.autoload.php によると、魔法の関数__autoload()は非推奨となり、削除されます(!)PHPバージョン。公式の代替手段はspl_autoload()です。 http://www.php.net/manual/en/function.spl-autoload.php を参照してください。ただし、phpマニュアルではこの赤ちゃんの正しい使い方を説明してください。
私の質問:これを置き換える方法(私の自動クラスオートローダー)
function __autoload($class) {
include 'classes/' . $class . '.class.php';
}
spl_autoload()を使用するバージョンでは? 問題は、その関数にパスを与える方法を理解できないことです(名前空間のみを受け入れます)。
ちなみに、SO.comにはこのトピックに関するスレッドがたくさんありますが、私のセクシーなワンライナーに代わるクリーンでシンプルなソリューションはありません。
_spl_autoload_register
_ でオートロード関数を登録する必要があります。 "callable" を指定する必要があります。これを行う最も良い方法は、5.3以降、無名関数を使用することです。
_spl_autoload_register(function($class) {
include 'classes/' . $class . '.class.php';
});
_
___autoload
_に対するこれの主な利点は、もちろん_spl_autoload_register
_を複数回呼び出すことができるのに対し、___autoload
_(関数と同様に)は1回しか定義できないことです。モジュラーコードを使用している場合、これは大きな欠点になります。
これに対する2018年の更新:自分のオートローダーをロールする必要があるときに、それほど多くの場合があるべきではありません。広く受け入れられている標準( PSR-4 と呼ばれる)といくつかの準拠する実装があります。これを行う明白な方法は Composer を使用することです。