久々のPHPネタ.
PHPでは, クライアントサイドJavaScriptと異なり, 必要なモジュールをrequire_onceなどで簡単に読み込むことができます.
しかしながら, モジュールが必要となるたびに読み込むのは少々めんどくさいです.
クラスファイル (クラスが定義されているファイル) の読み込みに限定されますが, 未定義のクラスが使われていると, あらかじめ登録されている規則にしたがって, 自動的にクラスファイルを読み込むという便利な機能を実現するのが, sql_autoload_register関数です.
使い方はこんな感じです.
1. クラスファイルを読み込むメソッドの実装 (loadClassメソッド)
まずは, このメソッドを実装する必要があります. このメソッドの引数には, 必要となったクラス名の文字列が自動的にわたされます.
そして, サンプルコードの実装では, 引数で渡されたクラス名のフィルが指定されたディレクトリ以下にあるかを探索し, 見つかればそのファイルを読み込みます.
2. spl_autoload_registerへの登録
あとは, spl_autoload_register関数を利用して, 未定義のクラスが見つかったら, このメソッドを実行してくださいね〜という指示をしておきます. 引数は配列で, サンプルコードではClassLoaderインスタンスのloadClassメソッドを実行するように定義しています.
ClassLoaderの使い方はこんな感じです.
$classLoader = new ClassLoader([ __DIR__ . '/controllers', __DIR__ . '/models', __DIR__ . '/utils' ]);
この例だと, 未定義のクラスが見つかれば, controllers, models, utils以下のディレクトリを探して〜ということを意味しています.