namespace OCP\EventDispatcher;
-use Symfony\Contracts\EventDispatcher\Event as SymfonyEvent;
+use Psr\EventDispatcher\StoppableEventInterface;
/**
* Base event class for the event dispatcher service
* Typically this class isn't instantiated directly but sub classed for specific
* event types
*
+ * This class extended \Symfony\Contracts\EventDispatcher\Event until 21.0, since
+ * 22.0.0 this class directly implements the PSR StoppableEventInterface and no
+ * longer relies on Symfony. This transition does not come with any changes in API,
+ * the class has the same methods and behavior before and after this change.
+ *
* @since 17.0.0
*/
-class Event extends SymfonyEvent {
+class Event implements StoppableEventInterface {
+
+ /**
+ * @var bool
+ *
+ * @since 22.0.0
+ */
+ private $propagationStopped = false;
/**
* Compatibility constructor
*/
public function __construct() {
}
+
+ /**
+ * Stops the propagation of the event to further event listeners
+ *
+ * @return void
+ *
+ * @since 22.0.0
+ */
+ public function stopPropagation(): void {
+ $this->propagationStopped = true;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @since 22.0.0
+ * @see \Psr\EventDispatcher\StoppableEventInterface
+ */
+ public function isPropagationStopped(): bool {
+ return $this->propagationStopped;
+ }
}