/** * モジュールローダを取得する */ protected function bootModuleLoader() { $loader = new ModuleLoader($this->newScope()); // 設定 $loader->on('moduleloader.loadmodule', function ($e) { if ($this->config()->has('module.' . $e->name)) { $e->module->configure($this->config()->get('module.' . $e->name)); } }); return $loader; }
/** * モジュールテスト */ public function testModule() { $loader = new ModuleLoader(Scope::create()->setComponent('autoloader', function () { return Nora::Autoloader(); })); // モジュールのロードディレクトリを作成 $loader->addModulePath(TEST_PROJECT_PATH . '/modules'); // モジュール生成時の処理 $loader->on('moduleloader.loadmodule', function ($e) { if ($e->name === 'hoge') { $e->module->configure(['a' => '1234']); } if ($e->name === 'hoge2') { $e->module->configure(['a' => '5678']); } }); $hoge = $loader->loadModule('hoge'); $this->assertEquals('1234', $hoge->sayValueOfA()); $this->assertEquals('fuga', $hoge->sayValueOfB()); $this->assertEquals('5678', $loader->loadModule('hoge2')->sayValueOfA()); }