ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

vendorディレクトリ以下をrequireしたい時

symfony/CakePHP/Akelosとみ〜んな"vendor"ってなってますが、RoR以降の流行なんでしょうか?

とまれ、アプリあるいはプロジェクト単位で外部ライブラリや、共通クラスなんかを使いたい場合、大概この中に置くことになると思います。
symfonyの場合は"symfony cc"で前もってクラスのrequireを事前キャッシュするようになってますが、CakePHPだとvendor()関数があります。Akelosの場合も Ak#vendor()メソッドが・・・

無い。(´・ω・`)ガッカリ・・・

Akelosのコードとかを読んでても、基本は自分でrequireをガリゴリ書いてるみたいです。vendorディレクトリ自体は以下に例示するように、二種類の定数を使って表記できます。こんな感じになります。

// アプリケーション単位のvendor以下:app/vendor/foo/bar.php をロード
require_once(AK_APP_VENDOR_DIR . '/foo/bar.php');

// Akelos自体の直下のvendor以下:akelos/vendor/foo/bar.php をロード
require_once(AK_VENDOR_DIR . '/foo/bar.php');

通常は前者、アプリ単位のAK_APP_VENDOR_DIRの方を使うと思います。AK_VENDOR_DIRの方はADODBとかPEARとか入ってますので、Akelos自体が触る所ですね。

requireを書く場所ですが、まぁどこでも良いんじゃないでしょーか。個人的にはこれを使うシーンはアプリ全体として使う定数定義とかになると思っていますので、AK_***定数が整った直後、すなわち ${akelos_app}/config/boot.phpで constants.phpをrequireした直後に、必要なモノは全部まとめてrequireしちゃえば良いんじゃないかと考えてます。