Merge pull request #25560 from nextcloud/enhancement/pure-psr-event

Make our event base class independent of Symfony and follow PSR
This commit is contained in:
Christoph Wurst 2021-02-10 16:13:06 +01:00 committed by GitHub
commit 039ecbdcf9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 3 deletions

@ -1 +1 @@
Subproject commit 90a8336c3b51a3be5869569ef8e84949a1e67608
Subproject commit 4466d782fafe2b53f3839156d10be0d3eacb47d6

View File

@ -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;
}
}