somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【php】クラスのオートロード

クラスを使う際には、そのクラスが記載されているファイルを読み込まなければなりません。 ファイルの読み込みにはinclude系またはrequire系を使用します。

ただし、ファイルの量が多くなればなるほど、読み込み処理の記述が増えます。 また、未定義のクラスを使用した際に「__autoload」という関数を呼び出すそうです。

つまり、__autoload関数にファイルの読み込み処理を書いて任せると、 各ファイルの読み込み処理が無くなりすっきりします。

フレームワーク

symfony:オートロード設定がされている物であれば気にせず使用できる

cake:App::importによるディレクトリ指定と対象ファイル指定

zendframework:requireで読み込み __autoloadは関数なので、1箇所でしか定義できない。

その問題を解決するものが「spl_autoload_register」 __autoloadと同じように呼び出されるメソッドを登録し、そのメソッドに任せるものです。

参考:

なぜPHPのautoload()が早いのか

クラスのオートロード

PHPのautoloadはどこまで効率的なのかrequire_onceと比べてみた

autoloadの実装について。