summaryrefslogtreecommitdiff
path: root/vendor/doctrine/event-manager
diff options
context:
space:
mode:
authorDevian <devianleong@gmail.com>2021-04-22 17:03:46 +0800
committerDevian <devianleong@gmail.com>2021-04-22 17:03:46 +0800
commit745cf2431a71d0e6c5f08f8605839279b2f7496e (patch)
tree11e4c7a19ac9f9efc1bb253b29b1fa488c34238e /vendor/doctrine/event-manager
Initiate commit
Diffstat (limited to 'vendor/doctrine/event-manager')
-rw-r--r--vendor/doctrine/event-manager/.doctrine-project.json18
-rw-r--r--vendor/doctrine/event-manager/LICENSE19
-rw-r--r--vendor/doctrine/event-manager/README.md13
-rw-r--r--vendor/doctrine/event-manager/composer.json50
-rw-r--r--vendor/doctrine/event-manager/lib/Doctrine/Common/EventArgs.php45
-rw-r--r--vendor/doctrine/event-manager/lib/Doctrine/Common/EventManager.php132
-rw-r--r--vendor/doctrine/event-manager/lib/Doctrine/Common/EventSubscriber.php21
7 files changed, 298 insertions, 0 deletions
diff --git a/vendor/doctrine/event-manager/.doctrine-project.json b/vendor/doctrine/event-manager/.doctrine-project.json
new file mode 100644
index 0000000..f6feb43
--- /dev/null
+++ b/vendor/doctrine/event-manager/.doctrine-project.json
@@ -0,0 +1,18 @@
+{
+ "active": true,
+ "name": "Event Manager",
+ "slug": "event-manager",
+ "docsSlug": "doctrine-event-manager",
+ "versions": [
+ {
+ "name": "1.0",
+ "branchName": "master",
+ "slug": "latest",
+ "current": true,
+ "aliases": [
+ "current",
+ "stable"
+ ]
+ }
+ ]
+}
diff --git a/vendor/doctrine/event-manager/LICENSE b/vendor/doctrine/event-manager/LICENSE
new file mode 100644
index 0000000..8c38cc1
--- /dev/null
+++ b/vendor/doctrine/event-manager/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2006-2015 Doctrine Project
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/doctrine/event-manager/README.md b/vendor/doctrine/event-manager/README.md
new file mode 100644
index 0000000..3aee6b6
--- /dev/null
+++ b/vendor/doctrine/event-manager/README.md
@@ -0,0 +1,13 @@
+# Doctrine Event Manager
+
+[![Build Status](https://travis-ci.org/doctrine/event-manager.svg)](https://travis-ci.org/doctrine/event-manager)
+[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/doctrine/event-manager/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/doctrine/event-manager/?branch=master)
+[![Code Coverage](https://scrutinizer-ci.com/g/doctrine/event-manager/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/doctrine/event-manager/?branch=master)
+
+The Doctrine Event Manager is a library that provides a simple event system.
+
+## More resources:
+
+* [Website](https://www.doctrine-project.org/)
+* [Documentation](https://www.doctrine-project.org/projects/doctrine-event-manager/en/latest/)
+* [Downloads](https://github.com/doctrine/event-manager/releases)
diff --git a/vendor/doctrine/event-manager/composer.json b/vendor/doctrine/event-manager/composer.json
new file mode 100644
index 0000000..3f026fe
--- /dev/null
+++ b/vendor/doctrine/event-manager/composer.json
@@ -0,0 +1,50 @@
+{
+ "name": "doctrine/event-manager",
+ "type": "library",
+ "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
+ "keywords": [
+ "events",
+ "event",
+ "event dispatcher",
+ "event manager",
+ "event system"
+ ],
+ "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
+ "license": "MIT",
+ "authors": [
+ {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
+ {"name": "Roman Borschel", "email": "roman@code-factory.org"},
+ {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
+ {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
+ {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"},
+ {"name": "Marco Pivetta", "email": "ocramius@gmail.com"}
+ ],
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpunit/phpunit": "^7.0"
+ },
+ "conflict": {
+ "doctrine/common": "<2.9@dev"
+ },
+ "config": {
+ "sort-packages": true
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "lib/Doctrine/Common"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Doctrine\\Tests\\": "tests/Doctrine/Tests"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ }
+}
diff --git a/vendor/doctrine/event-manager/lib/Doctrine/Common/EventArgs.php b/vendor/doctrine/event-manager/lib/Doctrine/Common/EventArgs.php
new file mode 100644
index 0000000..9b9cc05
--- /dev/null
+++ b/vendor/doctrine/event-manager/lib/Doctrine/Common/EventArgs.php
@@ -0,0 +1,45 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Doctrine\Common;
+
+/**
+ * EventArgs is the base class for classes containing event data.
+ *
+ * This class contains no event data. It is used by events that do not pass state
+ * information to an event handler when an event is raised. The single empty EventArgs
+ * instance can be obtained through {@link getEmptyInstance}.
+ */
+class EventArgs
+{
+ /**
+ * Single instance of EventArgs.
+ *
+ * @var EventArgs
+ */
+ private static $_emptyEventArgsInstance;
+
+ /**
+ * Gets the single, empty and immutable EventArgs instance.
+ *
+ * This instance will be used when events are dispatched without any parameter,
+ * like this: EventManager::dispatchEvent('eventname');
+ *
+ * The benefit from this is that only one empty instance is instantiated and shared
+ * (otherwise there would be instances for every dispatched in the abovementioned form).
+ *
+ * @link https://msdn.microsoft.com/en-us/library/system.eventargs.aspx
+ * @see EventManager::dispatchEvent
+ *
+ * @return EventArgs
+ */
+ public static function getEmptyInstance()
+ {
+ if (! self::$_emptyEventArgsInstance) {
+ self::$_emptyEventArgsInstance = new EventArgs();
+ }
+
+ return self::$_emptyEventArgsInstance;
+ }
+}
diff --git a/vendor/doctrine/event-manager/lib/Doctrine/Common/EventManager.php b/vendor/doctrine/event-manager/lib/Doctrine/Common/EventManager.php
new file mode 100644
index 0000000..a0860e3
--- /dev/null
+++ b/vendor/doctrine/event-manager/lib/Doctrine/Common/EventManager.php
@@ -0,0 +1,132 @@
+<?php
+
+namespace Doctrine\Common;
+
+use function spl_object_hash;
+
+/**
+ * The EventManager is the central point of Doctrine's event listener system.
+ * Listeners are registered on the manager and events are dispatched through the
+ * manager.
+ */
+class EventManager
+{
+ /**
+ * Map of registered listeners.
+ * <event> => <listeners>
+ *
+ * @var object[][]
+ */
+ private $_listeners = [];
+
+ /**
+ * Dispatches an event to all registered listeners.
+ *
+ * @param string $eventName The name of the event to dispatch. The name of the event is
+ * the name of the method that is invoked on listeners.
+ * @param EventArgs|null $eventArgs The event arguments to pass to the event handlers/listeners.
+ * If not supplied, the single empty EventArgs instance is used.
+ *
+ * @return void
+ */
+ public function dispatchEvent($eventName, ?EventArgs $eventArgs = null)
+ {
+ if (! isset($this->_listeners[$eventName])) {
+ return;
+ }
+
+ $eventArgs = $eventArgs ?? EventArgs::getEmptyInstance();
+
+ foreach ($this->_listeners[$eventName] as $listener) {
+ $listener->$eventName($eventArgs);
+ }
+ }
+
+ /**
+ * Gets the listeners of a specific event or all listeners.
+ *
+ * @param string|null $event The name of the event.
+ *
+ * @return object[]|object[][] The event listeners for the specified event, or all event listeners.
+ */
+ public function getListeners($event = null)
+ {
+ return $event ? $this->_listeners[$event] : $this->_listeners;
+ }
+
+ /**
+ * Checks whether an event has any registered listeners.
+ *
+ * @param string $event
+ *
+ * @return bool TRUE if the specified event has any listeners, FALSE otherwise.
+ */
+ public function hasListeners($event)
+ {
+ return ! empty($this->_listeners[$event]);
+ }
+
+ /**
+ * Adds an event listener that listens on the specified events.
+ *
+ * @param string|string[] $events The event(s) to listen on.
+ * @param object $listener The listener object.
+ *
+ * @return void
+ */
+ public function addEventListener($events, $listener)
+ {
+ // Picks the hash code related to that listener
+ $hash = spl_object_hash($listener);
+
+ foreach ((array) $events as $event) {
+ // Overrides listener if a previous one was associated already
+ // Prevents duplicate listeners on same event (same instance only)
+ $this->_listeners[$event][$hash] = $listener;
+ }
+ }
+
+ /**
+ * Removes an event listener from the specified events.
+ *
+ * @param string|string[] $events
+ * @param object $listener
+ *
+ * @return void
+ */
+ public function removeEventListener($events, $listener)
+ {
+ // Picks the hash code related to that listener
+ $hash = spl_object_hash($listener);
+
+ foreach ((array) $events as $event) {
+ unset($this->_listeners[$event][$hash]);
+ }
+ }
+
+ /**
+ * Adds an EventSubscriber. The subscriber is asked for all the events it is
+ * interested in and added as a listener for these events.
+ *
+ * @param EventSubscriber $subscriber The subscriber.
+ *
+ * @return void
+ */
+ public function addEventSubscriber(EventSubscriber $subscriber)
+ {
+ $this->addEventListener($subscriber->getSubscribedEvents(), $subscriber);
+ }
+
+ /**
+ * Removes an EventSubscriber. The subscriber is asked for all the events it is
+ * interested in and removed as a listener for these events.
+ *
+ * @param EventSubscriber $subscriber The subscriber.
+ *
+ * @return void
+ */
+ public function removeEventSubscriber(EventSubscriber $subscriber)
+ {
+ $this->removeEventListener($subscriber->getSubscribedEvents(), $subscriber);
+ }
+}
diff --git a/vendor/doctrine/event-manager/lib/Doctrine/Common/EventSubscriber.php b/vendor/doctrine/event-manager/lib/Doctrine/Common/EventSubscriber.php
new file mode 100644
index 0000000..7d5e2ea
--- /dev/null
+++ b/vendor/doctrine/event-manager/lib/Doctrine/Common/EventSubscriber.php
@@ -0,0 +1,21 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Doctrine\Common;
+
+/**
+ * An EventSubscriber knows himself what events he is interested in.
+ * If an EventSubscriber is added to an EventManager, the manager invokes
+ * {@link getSubscribedEvents} and registers the subscriber as a listener for all
+ * returned events.
+ */
+interface EventSubscriber
+{
+ /**
+ * Returns an array of events this subscriber wants to listen to.
+ *
+ * @return string[]
+ */
+ public function getSubscribedEvents();
+}