Есть ли аналог laravel’s GlobalScope у doctrine или symfony?

Да, в Symfony есть аналог GlobalScope из Laravel, называемый EventSubscribers.

EventSubscribers - это классы, которые реализуют интерфейс EventSubscriberInterface и подписываются на определенные события, которые происходят в приложении. Когда событие происходит, методы подписчика выполняются.

EventSubscribers позволяют добавлять "глобальные" действия к различным событиям в приложении Symfony, таким как перехватывание запросов, выполнение дополнительных действий перед сохранением объекта в базу данных и т.д.

Для создания EventSubscriber в Symfony, вы можете создать новый класс, реализующий интерфейс EventSubscriberInterface. В этом классе вы должны определить методы, которые будут вызываться при наступлении определенных событий. Например:

use SymfonyComponentEventDispatcherEventSubscriberInterface;
use SymfonyComponentHttpKernelEventControllerEvent;
use SymfonyComponentHttpKernelKernelEvents;

class MyEventSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        return [
            KernelEvents::CONTROLLER => 'onKernelController',
            // другие события
        ];
    }

    public function onKernelController(ControllerEvent $event)
    {
        // ваш код обработки события
    }
}

Затем вы должны зарегистрировать ваш EventSubscriber в конфигурации приложения, например, в файле services.yaml:

services:
    AppEventSubscriberMyEventSubscriber:
        tags:
            - { name: kernel.event_subscriber }

Теперь ваш EventSubscriber будет автоматически подписан на события, указанные в методе getSubscribedEvents().

Таким образом, EventSubscribers в Symfony предоставляют мощный механизм для добавления "глобальной" логики к различным событиям в вашем приложении. Они являются аналогом GlobalScope в Laravel, позволяя вам добавлять логику, которая будет выполняться автоматически при наступлении определенных событий.