/** * Get the manager associated to a given module. * @param string $module The module's name. * @return Manager The manager. */ public function getManagerOf($module) { if (!is_string($module) || empty($module)) { throw new \InvalidArgumentException('Invalid module name'); } if (!isset($this->managers[$module])) { $managerBaseName = '\\lib\\manager\\' . ucfirst($module) . 'Manager'; $api = $this->_getApiOf($module); if (empty($api)) { $availableApis = $this->daos->listApis(); $compatibleApis = array(); foreach ($availableApis as $apiName) { if (class_exists($managerBaseName . '_' . $apiName)) { $compatibleApis[] = $apiName; } } if (in_array($this->daos->getDefaultApi(), $compatibleApis)) { $api = $this->daos->getDefaultApi(); } else { if (count($compatibleApis) > 0) { $api = $compatibleApis[0]; } else { throw new \RuntimeException('No DAO available for manager "' . $managerBaseName . '"'); } } } $dao = $this->daos->getDao($api); $managerName = $managerBaseName . '_' . $api; if (!class_exists($managerName)) { throw new \RuntimeException('Unable to find manager "' . $managerName . '"'); } $this->managers[$module] = new $managerName($dao); } return $this->managers[$module]; }
/** * Recuperer un gestionnaire pour un module. * @param string $module le nom du module. * @return Manager Le gestionnaire. * @throws InvalidArgumentException */ public function get($module) { $module = ucfirst($module); if (!is_string($module) || empty($module)) { throw new InvalidArgumentException('Le module spécifié est invalide'); } if (!isset($this->managers[$module])) { $api = $this->daos->api($module); if (empty($api)) { $manager = '\\lib\\models\\' . $module . 'Manager'; $this->managers[$module] = new $manager($this->webos); } else { $dao = $this->daos->get($module); $manager = '\\lib\\models\\' . $module . 'Manager_' . $api; $this->managers[$module] = new $manager($this->webos, $dao); } } return $this->managers[$module]; }