Eva\EvaEngine\Engine::attachModuleEvents PHP Метод

attachModuleEvents() публичный Метод

public attachModuleEvents ( )
    public function attachModuleEvents()
    {
        $di = $this->getDI();
        $cachePrefix = $this->getAppName();
        $cacheFile = $this->getConfigPath() . "/_cache.{$cachePrefix}.events.php";
        $listeners = $this->readCache($cacheFile);
        $cacheLoaded = false;
        if (!$listeners) {
            $moduleManager = $this->getDI()->getModuleManager();
            $modules = $moduleManager->getModules();
            $listeners = array();
            foreach ($modules as $moduleName => $module) {
                $moduleListeners = $moduleManager->getModuleListeners($moduleName);
                if ($moduleListeners) {
                    $listeners[$moduleName] = $moduleListeners;
                }
            }
        } else {
            $cacheLoaded = true;
        }
        if (!is_array($listeners)) {
            return $this;
        }
        $eventsManager = $this->getDI()->getEventsManager();
        foreach ($listeners as $moduleName => $moduleListeners) {
            if (!$moduleListeners) {
                continue;
            }
            foreach ($moduleListeners as $eventType => $listener) {
                $eventsManager->attach($eventType, new $listener());
            }
        }
        if ($di->getConfig()->debug) {
            $debugger = $this->getDebugger();
            $debugger->debugVar($listeners, 'events');
        }
        if (!$di->getConfig()->debug && false === $cacheLoaded && $listeners) {
            $this->writeCache($cacheFile, $listeners);
        }
        return $this;
    }