Обычно при использовании сервисов в Symfony PHP я вставляю их в контроллеры следующим образом:
use App\Services\Utilities;
class Home extends Controller {
public function __construct(Utilities $u){
$u->doSomething();
}
}
Но у меня будет доступ к этой службе, только если будет вызван домашний контроллер (/ route matched).
Я хотел бы вызвать метод для запроса каждый в Symfony 4 - даже для запросов, которые перенаправляются или возвращают 404 - до того, как будет возвращен ответ.
Так..
Request --> $u->doSomething() --> Response
В каком месте приложения лучше всего внедрить эту услугу?






Вы можете создать подписчика для запроса события, примерно так:
<?php declare(strict_types=1);
namespace App\EventSubscribers;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class RequestSubscriber implements EventSubscriberInterface
{
private $utilites;
public function __construct(Utilites $something)
{
$this->utilites = $something;
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::REQUEST => 'onRequest'
];
}
public function onRequest(GetResponseEvent $event): void
{
if (!$event->isMasterRequest()) {
return;
}
$this->utilites->doSoemthing();
}
}