for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace MyTester;
use Psr\EventDispatcher\EventDispatcherInterface;
use Psr\EventDispatcher\ListenerProviderInterface;
use Psr\EventDispatcher\StoppableEventInterface;
/**
* Event dispatcher for {@see Tester}
*
* @author Jakub Konečný
* @internal
*/
final class TesterEventDispatcher implements EventDispatcherInterface
{
private ListenerProviderInterface $listenerProvider;
public function __construct(ListenerProviderInterface $listenerProvider)
$this->listenerProvider = $listenerProvider;
}
* @template T of object
* @param T $event
* @return T
public function dispatch(object $event): object
$listeners = $this->listenerProvider->getListenersForEvent($event);
foreach ($listeners as $listener) {
if ($event instanceof StoppableEventInterface && $event->isPropagationStopped()) {
break;
$listener($event);
return $event;
return $event
Psr\EventDispatcher\StoppableEventInterface
MyTester\T