Example #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.');
     }
 }
Example #2
0
 public function setDI(DI $di, Services $services)
 {
     /* Injections applied to all Controllers */
     if ($handle = opendir(realpath(__DIR__) . '/Controller')) {
         while (false !== ($entry = readdir($handle))) {
             if ($entry != '.' && $entry != '..') {
                 $controllerNamespace = 'Samsara\\Eden\\Controller\\' . str_replace('.php', '', $entry);
                 // Give all Controllers the setter injection for the service container, payload, request & response
                 $di->setters[$controllerNamespace]['setServiceContainer'] = $services;
                 $di->setters[$controllerNamespace]['setPayload'] = $services->lazyGet('payload.factory');
                 $di->setters[$controllerNamespace]['setRequest'] = $services->lazyGet('request');
                 $di->setters[$controllerNamespace]['setResponse'] = $services->lazyGet('response');
             }
         }
     }
     /* Injections applied to all Agents */
     if ($handle = opendir(realpath(__DIR__) . '/Agent')) {
         while (false !== ($entry = readdir($handle))) {
             if ($entry != '.' && $entry != '..') {
                 $agentNamespace = 'Samsara\\Eden\\Agent\\' . str_replace('.php', '', $entry);
                 // Give all Agents a new Payload factory
                 $di->setters[$agentNamespace]['setPayload'] = $services->lazyGet('payload.factory');
             }
         }
     }
     $di->types['Samsara\\Eden\\Kernel\\AuraExtend\\DI'] = $di;
     $di->types['Samsara\\Eden\\Kernel\\AuraExtend\\Services'] = $services;
     $di->types['Samsara\\Eden\\Kernel\\Kernel'] = $this;
     $di->types['Samsara\\Eden\\Kernel\\Config'] = $this->config;
     $di->types['Samsara\\Eden\\Provider\\CryptoProvider'] = $di->lazyNew('Samsara\\Eden\\Provider\\CryptoProvider');
     return $this;
 }