3 * Zend Framework (http://framework.zend.com/)
5 * @link http://github.com/zendframework/zf2 for the canonical source repository
6 * @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
7 * @license http://framework.zend.com/license/new-bsd New BSD License
10 namespace Zend\ModuleManager\Listener
;
12 use Zend\ModuleManager\Exception
;
13 use Zend\ModuleManager\Feature\DependencyIndicatorInterface
;
14 use Zend\ModuleManager\ModuleEvent
;
17 * Module resolver listener
19 class ModuleDependencyCheckerListener
22 * @var array of already loaded modules, indexed by module name
24 protected $loaded = array();
27 * @param \Zend\ModuleManager\ModuleEvent $e
29 * @throws Exception\MissingDependencyModuleException
31 public function __invoke(ModuleEvent
$e)
33 $module = $e->getModule();
35 if ($module instanceof DependencyIndicatorInterface ||
method_exists($module, 'getModuleDependencies')) {
36 $dependencies = $module->getModuleDependencies();
38 foreach ($dependencies as $dependencyModule) {
39 if (!isset($this->loaded
[$dependencyModule])) {
40 throw new Exception\
MissingDependencyModuleException(
42 'Module "%s" depends on module "%s", which was not initialized before it',
51 $this->loaded
[$e->getModuleName()] = true;