public function injectDependentModule($name, DependsOnModule $module) { $message = ''; $dependency = $module->_depends(); if (empty($dependency)) { return; } if (is_array($dependency)) { $message = reset($dependency); $dependency = key($dependency); } $config = $this->getModuleConfig($name); if (!isset($config['depends'])) { throw new ModuleRequireException($module, "\nThis module depends on {$dependency}\n" . "\n \n{$message}"); } $dependentModule = $this->create($config['depends'], false); if (!method_exists($module, '_inject')) { throw new ModuleException($module, 'Module requires method _inject to be defined to accept dependencies'); } $module->_inject($dependentModule); $dependentModule->_setConfig([]); }
/** * Get the dependencies of a module. * * @param \Codeception\Lib\Interfaces\DependsOnModule $module * @return array * @throws \Codeception\Exception\ModuleException */ private function getModuleDependencies(DependsOnModule $module) { $depends = $module->_depends(); if (!$depends) { return []; } if (!is_array($depends)) { $message = sprintf("Method _depends of module '%s' must return an array", get_class($module)); throw new ModuleException($module, $message); } return $depends; }