/** * Runs the given class loader module pre-loading (load dependencies) and * perform an initial check on module (Interface implementation). * If this success return a new instance from the module, otherwise * a ModuleException will be thrown. * * @param string $moduleClassName * * @return \BuildR\ClassLoader\Modules\ClassLoaderModuleInterface * * @throws \BuildR\ClassLoader\Exception\ModuleException */ public function preLoad($moduleClassName) { $interfaces = class_implements($moduleClassName); if (!in_array(ClassLoaderModuleInterface::class, $interfaces)) { throw ModuleException::invalid($moduleClassName); } $module = new $moduleClassName(); return $module; }
/** * Remove a registered loader module from the stack by its name. * To determine a module name use the modules getName() method. * * @param string $moduleName The module name * @param inst $priority The priority * * @return bool * * @throws \BuildR\ClassLoader\Exception\ModuleException */ public function removeModule($moduleName, $priority) { foreach ($this->modules as $modulePriority => $module) { if (call_user_func([$module, 'getName']) === $moduleName && $modulePriority == $priority) { unset($this->modules[$priority]); ksort($this->modules); return TRUE; } } throw ModuleException::notFound('Name: ' . $moduleName . ' Priority: ' . $priority); }