예제 #1
0
 /**
  * @param BaseApp $app
  */
 public function register(BaseApp $app)
 {
     $app->set('errorLogger', function (BaseApp $app) {
         $logger = new \Monolog\Logger('errorLogger');
         $handler = new \Monolog\Handler\ErrorLogHandler();
         if (!$app->isCli()) {
             $handler->pushProcessor(new \Monolog\Processor\WebProcessor());
             $format = '%level_name%: %message% %extra.server%%extra.url%';
         } else {
             $format = '%level_name%: %message%';
         }
         $handler->setFormatter(new \Monolog\Formatter\LineFormatter($format, null, true));
         $logger->pushHandler($handler);
         return $logger;
     });
     $app->set('whoopsDebugErrorPageHandler', function (BaseApp $app) {
         $prettyPageHandler = new \Whoops\Handler\PrettyPageHandler();
         if ($app->getConfig()->has('editor')) {
             $prettyPageHandler->setEditor($app->getConfig()->get('editor'));
         }
         return $prettyPageHandler;
     });
     $app->set('whoopsErrorHandler', function (BaseApp $app) {
         $plainTextHandler = new \Whoops\Handler\PlainTextHandler();
         $plainTextHandler->setLogger($app->get('errorLogger'));
         if (!$app->isCli()) {
             $plainTextHandler->loggerOnly(true);
         }
         return $plainTextHandler;
     });
     $app->set('whoops', function (BaseApp $app) {
         $whoops = new \Whoops\Run();
         if (ini_get('display_errors')) {
             $whoops->pushHandler($app->get('whoopsDebugErrorPageHandler'));
         }
         // Handles cli output and logging
         $whoops->pushHandler($app->get('whoopsErrorHandler'));
         return $whoops;
     });
     $app->get('whoops')->register();
 }
예제 #2
0
 /**
  * @param string $action
  * @param mixed $actionResponse
  * @return Response
  */
 protected function getDispatchResponse($action, $actionResponse)
 {
     if ($actionResponse instanceof Response) {
         return $actionResponse->prepare($this->request);
     } elseif ($actionResponse !== null) {
         return $this->app->get('response')->setContent((string) $actionResponse)->prepare($this->request);
     } elseif ($this->autoRenderView) {
         $viewScript = $this->autoRenderViewScript ?: $this->getAutoRenderViewScriptName($this->module, $this->controller, $action);
         return $this->app->get('response')->setContent($this->view->render($viewScript, true))->prepare($this->request);
     } else {
         // Empty response if no other response is set
         return $this->app->get('response')->setContent('')->prepare($this->request);
     }
 }
예제 #3
0
 public function testDestroyAllInstances()
 {
     $count = 0;
     $this->app->set('testObj', function () use(&$count) {
         $obj = new \stdClass();
         $obj->id = ++$count;
         return $obj;
     });
     $obj1 = $this->app->get('testObj');
     $this->app->destroyAllInstances();
     $obj2 = $this->app->get('testObj');
     $obj3 = $this->app->get('testObj');
     $this->assertNotEquals($obj1->id, $obj2->id);
     $this->assertEquals($obj2->id, $obj3->id);
 }