## app binding : xe.module 으로 바인딩 되어 있음
Module Facade 로 접근이 가능함.
## 사용법
### 전체 Module 조회
* Register 를 통해 모든 Module 들을 조회한다
php
$allModules = $handler->getAll();
### 전체 Module 의 정보 조회
* getAll()을 통해 조회된 내역들을 바탕으로 Module class 들의 정보를 조회
php
$allModules = $handler->getAllModuleInfo();
### ModuleClassName 조회
* Module Id 를 전달하여 ClassName 조회
* 찾고자 하는 Module 의 Id 를 인자로 전달
php
$className = $menuHandler->getModuleClassName($moduleId);
### ModuleClass 의 인스턴스화한 Object 획득
* Module Id(Module Id) 를 전달하여 인스턴스한 Object 를 획득
* 찾고자 하는 Module 의 Id 를 인자로 전달
php
$moduleObject = $menuHandler->getModuleObject($moduleId);
/** * Get setting page url by menu item * * @param MenuItem $item menu item instance * @return string|null */ public function getInstanceSettingURI(MenuItem $item) { $menuType = $this->modules->getModuleObject($item->type); return $menuType::getInstanceSettingURI($item->getKey()); }
/** * editItemPermission * 선택된 메뉴의 아이템을 permission 을 수정하는 페이지 구성 * * @param MenuHandler $handler menu handler * @param ModuleHandler $modules module handler * @param string $menuId menu id * @param string $itemId item id * * @return RendererInterface */ public function editItemPermission(MenuHandler $handler, ModuleHandler $modules, $menuId, $itemId) { $item = $handler->getItem($itemId); $menu = $item->menu; if ($menu->getKey() !== $menuId) { throw new InvalidArgumentHttpException(400); } try { $menuType = $modules->getModuleObject($item->type); } catch (NotFoundModuleException $e) { $menuType = null; } $permArgs = $this->getPermArguments($handler->permKeyString($item), [MenuHandler::ACCESS, MenuHandler::VISIBLE]); return XePresenter::make('menu.itemPermission', array_merge(['menu' => $menu, 'item' => $item, 'menuType' => $menuType], $permArgs)); }
/** * testGetModuleObjectThrowException * * @return void */ public function testGetModuleObjectThrowException() { $this->setExpectedException('\\XpressEngine\\Menu\\Exceptions\\NotFoundModuleException'); $register = $this->register; $register->shouldReceive('get')->andReturn(null); $moduleHandler = new ModuleHandler($register); $moduleHandler->getModuleObject('module/xpressengine@test'); }