vendor/sentry/sentry-symfony/src/EventListener/SubRequestListener.php line 40

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Sentry\SentryBundle\EventListener;
  4. use Sentry\State\HubInterface;
  5. use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. /**
  8. * This listener ensures that a new {@see \Sentry\State\Scope} is created for
  9. * each subrequest.
  10. */
  11. final class SubRequestListener
  12. {
  13. use KernelEventForwardCompatibilityTrait;
  14. /**
  15. * @var HubInterface The current hub
  16. */
  17. private $hub;
  18. /**
  19. * Constructor.
  20. *
  21. * @param HubInterface $hub The current hub
  22. */
  23. public function __construct(HubInterface $hub)
  24. {
  25. $this->hub = $hub;
  26. }
  27. /**
  28. * This method is called for each subrequest handled by the framework and
  29. * pushes a new {@see \Sentry\State\Scope} onto the stack.
  30. *
  31. * @param RequestEvent $event The event
  32. */
  33. public function handleKernelRequestEvent(RequestEvent $event): void
  34. {
  35. if ($this->isMainRequest($event)) {
  36. return;
  37. }
  38. $this->hub->pushScope();
  39. }
  40. /**
  41. * This method is called for each subrequest handled by the framework and
  42. * pops a {@see \Sentry\State\Scope} from the stack.
  43. *
  44. * @param FinishRequestEvent $event The event
  45. */
  46. public function handleKernelFinishRequestEvent(FinishRequestEvent $event): void
  47. {
  48. if ($this->isMainRequest($event)) {
  49. return;
  50. }
  51. $this->hub->popScope();
  52. }
  53. }