クラスのオートローディング
オブジェクト指向アプリケーションを作成する開発者の多くは、
クラス定義毎に一つのPHPソースファイルを作成します。
最大の問題は、各スクリプトの先頭に、必要な読み込みを行う長いリストを
記述する必要があることです(各クラスについて一つ)。
spl_autoload_register 関数を使うと、
任意の数のオートローダーを登録でき、
クラスやインターフェイスが定義されていなくても自動的に読み込めるようになります。
オートローダーを登録すれば、PHPがエラーで止まる前にクラスをロードする最後の
チャンスが与えられます。
クラスに類似した言語構造は、同じやり方でオートロードできます。
これには、クラス、インターフェイス、トレイト、列挙型が含まれます。
PHP 8.0.0 より前のバージョンでは、
__autoload 関数でもクラスやインターフェイスのオートロードが可能でした。
しかし、この関数は
spl_autoload_register 関数に比べると柔軟性という点で劣っています。
そのため、__autoload
関数は PHP 7.2.0 で推奨されなくなり、
PHP 8.0.0 で削除されました。
複数のオートローダーを複数回登録するために、
spl_autoload_register
を複数回コールしても構いません。
但し、オートロードを行う関数から例外がスローされると、
オートロードのプロセスが中断され、
後続のオートロード関数の実行ができなくなります。
よって、オートロード関数から例外をスローすることは、
全くお勧めできません。
オートロードの例
この例は、 クラス MyClass1 および
MyClass2 をそれぞれ
MyClass1.php および
MyClass2.php からロードします。
]]>
オートロードの別の例
この例は、インターフェイス ITest をロードしようとします。
]]>
Composerのオートローダーの利用
&link.composer; は vendor/autoload.php ファイルを生成します。
これは Composer によって管理されているパッケージを自動的に読み込むよう設定されています。
このファイルを読み込むことで、これらのパッケージを追加の作業なしで利用できるようになります。
", $uuid->toString(), "\n";
?>
]]>
&reftitle.seealso;
unserialize
unserialize_callback_func
unserialize_max_depth
spl_autoload_register
spl_autoload
__autoload