Exemplo n.º 1
0
 public function run()
 {
     /**
      * @var $matcher Matcher
      * @var $request ServerRequest
      */
     $matcher = $this->services->get('route.matcher');
     $request = $this->services->get('request');
     $route = $matcher->match($request);
     foreach ($route->attributes as $key => $val) {
         $request = $request->withAttribute($key, $val);
     }
     // Reset the service since the Zend request class is f*****g immutable
     $this->services->set('request', $request);
     $handler = $route->handler;
     /**
      * @var AbstractController
      */
     $controller = $this->di->newInstance('Samsara\\Eden\\Controller\\' . $handler['controller']);
     $controller->setRequest($request);
     $content = call_user_func([$controller, $handler['action']]);
     if (!$content instanceof Response) {
         /**
          * @var Logger
          */
         $logger = $this->services->get('logger');
         $logger->addError($handler['controller'] . '::' . $handler['action'] . ' did not return a Response class.');
         throw new ApplicationException('Eden expected controller ' . $handler['controller'] . ' with action ' . $handler['action'] . ' to return an instance of Samsara\\Eden\\Kernel\\ZendExtend\\Response, but something else was returned instead.');
     }
 }
Exemplo n.º 2
0
 public function setServices(Services $services)
 {
     $request = ServerRequestFactory::fromGlobals();
     $response = new Response();
     $templater = new Engine($this->config->get('template.location'));
     $logger = new Logger('app');
     $logHandler = new StreamHandler($this->config->getSys('log.location'), $this->logLevel[$this->config->get('log.level')]);
     $logger->pushHandler($logHandler);
     $emConfig = Setup::createAnnotationMetadataConfiguration([$this->config->getSys('basedir')], false);
     $emConn = ['driver' => 'pdo_pgsql'];
     $em = EntityManager::create($emConn, $emConfig);
     $services->set('payload.factory', new PayloadFactory());
     $services->set('request', $request);
     $services->set('response', $response);
     $services->set('logger', $logger);
     $services->set('kernel', $this);
     $services->set('template.engine', $templater);
     $services->set('entityManager', $em);
     return $this;
 }