public function registerMiddleware($route) { if (isset($route['middleware'])) { foreach ($route['middleware'] as $middleware) { if (empty($middleware)) { continue; } $reflector = new Reflector('App\\Middlewares\\' . $middleware); $reflector->inject([], $this->app); $middleware = $reflector->resolve(); $middleware->register(); } } }
public function fire($event, $params = []) { $eventObj = $this->getListener($event); if (!$eventObj) { return; } if (!array_key_exists('object', $eventObj)) { foreach ($eventObj as $ev_name => $ev) { $this->fire($event . '.' . $ev_name, $params); } return; } $event_dispatch = new Reflector($eventObj['object'], $eventObj['method']); if ($event_dispatch->isExists()) { $event_dispatch->inject($params, $this->container); $event_dispatch->resolve(); } }
public function dispatch() { if ($this->response->isRedirection() || $this->response->isForbidden()) { return; } if (!$this->isDispatchable()) { return $this->notFound(); } View::addGlobal('__current_parent', $this->current->getParent()); View::addGlobal('__current', $this->current->getIdentifier()); try { list($controller, $parameters) = $this->current->dispatch(); $reflector = new Reflector($controller); $reflector->inject($parameters, $this); ob_start(); $object = $reflector->resolve(); $result = ob_get_clean(); if (!$object && !$result) { return; } if ($object instanceof ViewContract) { $result = $object->render(); } if (strlen($result) === 0) { $this->response->setContent($object); } else { $this->response->setContent($result); } $this->response->prepare($this->request); return; } catch (\Exception $e) { if ($this->config->get('app.debug', false)) { throw $e; } } }