未定義のクラスを使おうとすると、特殊関数 __autoload()が呼び出される。
spl_autoload_register()で関数を登録しておくと、それを __autoload() として呼び出してもらえる。
つまり、この関数の中でクラス名からファイル名をでっちあげてインクルードすれば、オートロード完成となる。
なるほどこういう仕組みなのか
class Fuga_Piyo を必要とするとき、自動的に /opt/hoge/lib/fuga/piyo.php をインクルードする。
<? spl_autoload_register(function($class){ $dir = "/opt/hoge/lib"; $class = str_replace( "_", "/", strtolower($class) ); include "$dir/$class.php"; }); $a = new Fuga_Piyo(); $a->hello();
本物は名前空間対策とかもっといろいろ書いてあるけど、かいつまんで書くと だいたいこんな感じ。