예제 #1
0
 /**
  * Ask the resource represented by this RequestDispatcher to process
  * the associated request, and create (or append to) the associated response.
  *
  * @param \Symfony\Component\HttpFoundation\Request $request The servlet request we are
  * processing
  * @param \Symfony\Component\HttpFoundation\Response $response The servlet response we are
  * creating
  * @todo Manage exception if the resource doesn't exist.
  */
 protected function invoke(\Symfony\Component\HttpFoundation\Request $request, \Symfony\Component\HttpFoundation\Response $response)
 {
     $requestURI = urldecode($this->requestURI);
     $urls = @parse_url($requestURI);
     if (array_key_exists('query', $urls)) {
         parse_str($urls['query'], $_GET);
     }
     $path = $this->context->getRealPath($urls['path']);
     $_REQUEST = array_merge($_GET, $_POST, $_COOKIE);
     $fileExists = @fopen($path, 'r', true);
     if (!$fileExists) {
         $this->{$log}->error('Resource ' . $path . ' is not found');
         throw new \Serphlet\Exception\UnavailableException('The resource is currently unavailable');
     } else {
         fclose($fileExists);
     }
     if ($response->getAutoflush()) {
         require $path;
     } else {
         ob_start();
         require $path;
         $response->write(ob_get_contents());
         ob_end_clean();
     }
 }