/** * Run controller chain. */ public function run() { $this->init(); $event = $this->registry->getObserver()->trigger($this, 'beforeRunControllerChain'); //listeners can prevent running chain if (!$event->isDefaultPrevented()) { foreach ($this->controllerChain as $item) { $item['instance']->{$item['action']}(); } } }
/** * Initialize application. Make all necessary components and put it in registry. * * @return $this */ public function initialize() { $this->kit = $this->makeKit(); //make basic components $this->registry = $this->kit->makeRegistry(); $this->registry->setConfig($this->config)->setKit($this->kit)->setObserver($this->kit->makeObserver()); //trigger event $event = $this->registry->getObserver()->trigger($this, 'beforeInitialize'); if ($event->isDefaultPrevented()) { return; } $request = $this->makeRequest(); //put components in registry $this->registry->setConnectionStorage($this->kit->makeConnectionStorage())->setRequest($request)->setResponse($this->makeResponse($request))->setFlashMessenger($this->kit->makeFlashMessenger()); $this->setupConnectionForTableModels(); $this->initialized = true; $this->frontController = $this->makeFrontController(); return $this; }