Moony 0.11.xのプラグインモジュール機能

以前検討していたコンテナ機能だけど、結局「プラグインモジュール」として利用できるように。

Moony::setPluginDir($dir)Moony::setModuleDir($dir)を使用してディレクトリを設定しておくと、そのディレクトリ内のクラスをインクルード、インスタンスをアクションクラス内で取得できる仕組み。特別な設定ファイルは必要ない。

$moony = new Moony;
$moony->setModuleDir('/path/to/modules');
...

フロントコントローラで上記のように設定しておくと、下記のように取得可能:

class Hoge  // アクションクラス
{
    /**
     * @param object $t Moony_Template
     * @param object $c Moony_Context
     */
    function execute($t, $c)
    {
        // /path/to/modules/Foo/Bar.phpをインクルード、
        // Foo_Barクラスのインスタンスを取得
        $foo_bar = $c->getModule('Foo_Bar');
    }
}