揮発性のメモ2

知識をメモ書きしておく

FuelPHPのオートローダーもどき

未定義のクラスを使おうとすると、特殊関数 __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();

本物は名前空間対策とかもっといろいろ書いてあるけど、かいつまんで書くと だいたいこんな感じ。

FuelPHPで自作クラスをオートロードさせる

やり方がいろいろあるみたいだけど、よくわからないので手抜きで

fuel/app/classes/fuga -> /opt/hoge/lib/fuga

シンボリックリンクを張りお茶を濁す