diff options
author | Christoph Wurst <ChristophWurst@users.noreply.github.com> | 2021-02-10 16:13:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-10 16:13:06 +0100 |
commit | 039ecbdcf9d0798b612b6cb02203c0cd6e930100 (patch) | |
tree | 8f06a5c07f9f2f7473b906634f6e2d288b411528 /lib | |
parent | 2f26ff40e9aaabd1c8cc2167dea2158a22b1961f (diff) | |
parent | 0a28440bf62d7f0a29652265864f058c18632a7f (diff) | |
download | nextcloud-server-039ecbdcf9d0798b612b6cb02203c0cd6e930100.tar.gz nextcloud-server-039ecbdcf9d0798b612b6cb02203c0cd6e930100.zip |
Merge pull request #25560 from nextcloud/enhancement/pure-psr-event
Make our event base class independent of Symfony and follow PSR
Diffstat (limited to 'lib')
-rw-r--r-- | lib/public/EventDispatcher/Event.php | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/lib/public/EventDispatcher/Event.php b/lib/public/EventDispatcher/Event.php index 8e6a5217af9..b07efba0f19 100644 --- a/lib/public/EventDispatcher/Event.php +++ b/lib/public/EventDispatcher/Event.php @@ -26,7 +26,7 @@ declare(strict_types=1); namespace OCP\EventDispatcher; -use Symfony\Contracts\EventDispatcher\Event as SymfonyEvent; +use Psr\EventDispatcher\StoppableEventInterface; /** * Base event class for the event dispatcher service @@ -34,9 +34,21 @@ use Symfony\Contracts\EventDispatcher\Event as SymfonyEvent; * 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 @@ -51,4 +63,25 @@ class Event extends SymfonyEvent { */ 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; + } } |