class EventDataCollector
@author Fabien Potencier <fabien@symfony.com>
@final
Hierarchy
- class \Symfony\Component\HttpKernel\DataCollector\DataCollector implements \Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface
- class \Symfony\Component\HttpKernel\DataCollector\EventDataCollector extends \Symfony\Component\HttpKernel\DataCollector\DataCollector implements \Symfony\Component\HttpKernel\DataCollector\LateDataCollectorInterface
Expanded class hierarchy of EventDataCollector
See also
File
-
vendor/
symfony/ http-kernel/ DataCollector/ EventDataCollector.php, line 29
Namespace
Symfony\Component\HttpKernel\DataCollectorView source
class EventDataCollector extends DataCollector implements LateDataCollectorInterface {
/** @var iterable<EventDispatcherInterface> */
private iterable $dispatchers;
private ?Request $currentRequest = null;
/**
* @param iterable<EventDispatcherInterface>|EventDispatcherInterface|null $dispatchers
*/
public function __construct(iterable|EventDispatcherInterface|null $dispatchers = null, ?RequestStack $requestStack = null, string $defaultDispatcher = 'event_dispatcher') {
if ($dispatchers instanceof EventDispatcherInterface) {
$dispatchers = [
$this->defaultDispatcher => $dispatchers,
];
}
$this->dispatchers = $dispatchers ?? [];
}
public function collect(Request $request, Response $response, ?\Throwable $exception = null) : void {
$this->currentRequest = $this->requestStack && $this->requestStack
->getMainRequest() !== $request ? $request : null;
$this->data = [];
}
public function reset() : void {
parent::reset();
foreach ($this->dispatchers as $dispatcher) {
if ($dispatcher instanceof ResetInterface) {
$dispatcher->reset();
}
}
}
public function lateCollect() : void {
foreach ($this->dispatchers as $name => $dispatcher) {
if (!$dispatcher instanceof TraceableEventDispatcher) {
continue;
}
$this->setCalledListeners($dispatcher->getCalledListeners($this->currentRequest), $name);
$this->setNotCalledListeners($dispatcher->getNotCalledListeners($this->currentRequest), $name);
$this->setOrphanedEvents($dispatcher->getOrphanedEvents($this->currentRequest), $name);
}
$this->data = $this->cloneVar($this->data);
}
public function getData() : array|Data {
return $this->data;
}
/**
* @see TraceableEventDispatcher
*/
public function setCalledListeners(array $listeners, ?string $dispatcher = null) : void {
$this->data[$dispatcher ?? $this->defaultDispatcher]['called_listeners'] = $listeners;
}
/**
* @see TraceableEventDispatcher
*/
public function getCalledListeners(?string $dispatcher = null) : array|Data {
return $this->data[$dispatcher ?? $this->defaultDispatcher]['called_listeners'] ?? [];
}
/**
* @see TraceableEventDispatcher
*/
public function setNotCalledListeners(array $listeners, ?string $dispatcher = null) : void {
$this->data[$dispatcher ?? $this->defaultDispatcher]['not_called_listeners'] = $listeners;
}
/**
* @see TraceableEventDispatcher
*/
public function getNotCalledListeners(?string $dispatcher = null) : array|Data {
return $this->data[$dispatcher ?? $this->defaultDispatcher]['not_called_listeners'] ?? [];
}
/**
* @param array $events An array of orphaned events
*
* @see TraceableEventDispatcher
*/
public function setOrphanedEvents(array $events, ?string $dispatcher = null) : void {
$this->data[$dispatcher ?? $this->defaultDispatcher]['orphaned_events'] = $events;
}
/**
* @see TraceableEventDispatcher
*/
public function getOrphanedEvents(?string $dispatcher = null) : array|Data {
return $this->data[$dispatcher ?? $this->defaultDispatcher]['orphaned_events'] ?? [];
}
public function getName() : string {
return 'events';
}
}