こういうのにクロージャーって便利なんですね。ソースコードはgitHubのGistにて公開しました。
初めてクロージャーをちゃんと使った気がする。
https://gist.github.com/1620960#file_class_loader_ns.php
特徴は、パラメータ無しで動きます。
◆使い方は、たとえば次のようなクラスをロードする場合。
new AmidaMVC\Folder\SomeClass();
対応するクラスのが次の場所だったとします。
pathto/src/AmidaMVC/Folder/SomeClass.class
こういう場合は、pathto/src/AmidaMVC/bootstrap.php
などに上のGistコードを貼り付けてください。
spl_autoload_register( ClassLoader() );
普通、多分、他のコードを見る感じだとクラスをロードするには、ライブラリで使っているネームスペースとパスを指定する必要があります。
この関数は、呼ばれた場所がライブラリの一番上と仮定して、現在のフォルダーをネームスペース(例の場合はAmidaMVC)、そして現在のフォルダーをのぞいたパス(例の場合はpathto/src/)を設定します。
◆ただし、関数の定義が別ファイルにある場合は、先のbootstrap.phpで
spl_autoload_register( ClassLoader( __DIR__ ) );
とすれば動く「はず」です(動作は未確認)。
◆注意
今コードを見たら、バグがありますね。
少なくとも自分の環境では動いているので、ちょっと修正すれば動くと思います。また時間を見つけたら修正します。
0 件のコメント:
コメントを投稿