Esempio n. 1
0
 /**
  * Triggers any "not allowed" filters and prepares an appropriate 404 error response.
  */
 private function prepareNotAllowedResponse()
 {
     ob_clean();
     $this->response = new Response();
     $this->response->setResponseCode(ResponseCode::HTTP_METHOD_NOT_ALLOWED);
     $this->context->registerInstance($this->response);
     $this->filters->trigger(Filters::METHOD_NOT_ALLOWED, $this->context);
     $this->finalizeOutputBuffer();
     if (empty($this->response->getBody())) {
         $this->serveStaticPage('method_not_allowed');
     }
 }
Esempio n. 2
0
 /**
  * Executes a route action, given a callable and a context.
  * 
  * @param callable $targetFunc The target function to be executed.
  * @param Context $context The context the target function should be executed under (for dependency injection).
  * @return mixed The function's return value.
  * @throws \Exception If an exception is raised during execution, it will be rethrown.
  */
 private function executeAction(callable $targetFunc, Context $context)
 {
     $returnValue = null;
     $paramValues = $context->determineParamValues($targetFunc);
     try {
         $returnValue = call_user_func_array($targetFunc, $paramValues);
     } catch (\Exception $ex) {
         $context->registerInstance($ex);
         $this->filters->trigger(Filters::ON_EXCEPTION, $context);
         if (!$this->filters->anyHandlersForEvent(Filters::ON_EXCEPTION)) {
             // If this exception was unhandled, rethrow it so it can be handled in the global scope
             throw $ex;
         }
     }
     return $returnValue;
 }
Esempio n. 3
0
 public function testContinueIsTrueByDefault()
 {
     $filters = new Filters();
     $this->assertTrue($filters->trigger('myEventType'), 'Continue should be true if no filters are triggered');
 }