FuelPHP で変なところに置いた自作のライブラリをロードする

fuelPHPは、クラスとファイルにルールどおり名付ければincludeしなくても自動でファイルを読み込んでくれる。俺俺ライブラリを呼ぶ時にこれで呼びたいけどできないから自作しちゃうぜ!というコードを見かけ、「いやそんなことしなくてもできるんじゃね」と調べたので、やり方を書いておく。

呼ばれる側の俺俺ライブラリの構成

「namespaceとクラス名の中の「_」はフォルダ区切りを意味する」ルールに従って名前とフォルダ構成を。

ファイル:path/to/orelib/sugoi/hoge/fuga.php

namespale orelib\sugoi;
class Hoge_Fuga {}

自動的にファイルが読み込まれるようにする

この仕組みはCore\Autoloaderで実現されていて、Autoloader::add_namespace()でnamespaceとパスを追加すれば、そこも検索対象に含めてくれるようになる。

// public static function add_namespace($namespace, $path, $psr = false)
\Fuel\Core\Autoloader::add_namespace('orelib', 'path/to/orelib/'); // 末尾は "/"
$fuga = new \orelib\sugoi\Hoge_Fuga();

え、毎回呼ぶの?


app/bootstrap.php を編集

// Register the autoloader
Autoloader::register();
Autoloader::add_namespace('orelib', 'path/to/orelib/'); // この辺に追記

追記

ついでに書いておくと、Autoloader::add_namespace()は3つ目の引数$psrがある。
デフォルトではfalseだけど、これをtrueにするとpsr-0準拠の命名規則に対応する。っぽい。
(準拠だったはず、なものをロードしたら読めたけど、詳しく確かめてない)

なんかversion.2以降でpsr-0,1対応するとかいう話を聞いたので、それから確かめたらいいんじゃないかな!

www.amazon.co.jp[/amazon]

Leave a comment

Your comment

*