Advertisement
Guest User

Symfony Framework

a guest
Aug 13th, 2021
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.05 KB | None | 0 0
  1. <?php declare(strict_types=1);
  2.  
  3. namespace Simplex;
  4.  
  5. use Symfony\Component\EventDispatcher\EventDispatcher;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  9. use Symfony\Component\Routing\Exception\ResourceNotFoundException;
  10. use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
  11. use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
  12. use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
  13.  
  14. class Framework
  15. {
  16.     private EventDispatcher $dispatcher;
  17.     private UrlMatcherInterface $matcher;
  18.     private ControllerResolverInterface $controllerResolver;
  19.     private ArgumentResolverInterface $argumentResolver;
  20.  
  21.     public function __construct(
  22.         EventDispatcher             $dispatcher,
  23.         UrlMatcherInterface         $matcher,
  24.         ControllerResolverInterface $controllerResolver,
  25.         ArgumentResolverInterface   $argumentResolver
  26.     ) {
  27.         $this->dispatcher = $dispatcher;
  28.         $this->matcher = $matcher;
  29.         $this->controllerResolver = $controllerResolver;
  30.         $this->argumentResolver = $argumentResolver;
  31.     }
  32.  
  33.     public function handle(Request $request)
  34.     {
  35.         $this->matcher->getContext()->fromRequest($request);
  36.  
  37.         try {
  38.             $request->attributes->add($this->matcher->match($request->getPathInfo()));
  39.  
  40.             $controller = $this->controllerResolver->getController($request);
  41.             $arguments = $this->argumentResolver->getArguments($request, $controller);
  42.  
  43.             $response = call_user_func_array($controller, $arguments);
  44.         } catch (ResourceNotFoundException $exception) {
  45.             $response = new Response('Not Found', 404);
  46.         } catch (\Exception $exception) {
  47.             $response = new Response('An error occurred', 500);
  48.         }
  49.  
  50.         // dispatch a response event
  51.         $this->dispatcher->dispatch(new ResponseEvent($kernel, $request, $requestType, $response), 'response');
  52.  
  53.         return $response;
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement