diff options
author | polo <ordipolo@gmx.fr> | 2024-08-13 23:45:21 +0200 |
---|---|---|
committer | polo <ordipolo@gmx.fr> | 2024-08-13 23:45:21 +0200 |
commit | bf6655a534a6775d30cafa67bd801276bda1d98d (patch) | |
tree | c6381e3f6c81c33eab72508f410b165ba05f7e9c /vendor/doctrine/orm/src/Event | |
parent | 94d67a4b51f8e62e7d518cce26a526ae1ec48278 (diff) | |
download | AppliGestionPHP-bf6655a534a6775d30cafa67bd801276bda1d98d.zip |
VERSION 0.2 doctrine ORM et entités
Diffstat (limited to 'vendor/doctrine/orm/src/Event')
14 files changed, 426 insertions, 0 deletions
diff --git a/vendor/doctrine/orm/src/Event/ListenersInvoker.php b/vendor/doctrine/orm/src/Event/ListenersInvoker.php new file mode 100644 index 0000000..c0c327e --- /dev/null +++ b/vendor/doctrine/orm/src/Event/ListenersInvoker.php | |||
@@ -0,0 +1,98 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\Common\EventArgs; | ||
8 | use Doctrine\Common\EventManager; | ||
9 | use Doctrine\ORM\EntityManagerInterface; | ||
10 | use Doctrine\ORM\Mapping\ClassMetadata; | ||
11 | use Doctrine\ORM\Mapping\EntityListenerResolver; | ||
12 | |||
13 | /** | ||
14 | * A method invoker based on entity lifecycle. | ||
15 | */ | ||
16 | class ListenersInvoker | ||
17 | { | ||
18 | final public const INVOKE_NONE = 0; | ||
19 | final public const INVOKE_LISTENERS = 1; | ||
20 | final public const INVOKE_CALLBACKS = 2; | ||
21 | final public const INVOKE_MANAGER = 4; | ||
22 | |||
23 | /** The Entity listener resolver. */ | ||
24 | private readonly EntityListenerResolver $resolver; | ||
25 | |||
26 | /** The EventManager used for dispatching events. */ | ||
27 | private readonly EventManager $eventManager; | ||
28 | |||
29 | public function __construct(EntityManagerInterface $em) | ||
30 | { | ||
31 | $this->eventManager = $em->getEventManager(); | ||
32 | $this->resolver = $em->getConfiguration()->getEntityListenerResolver(); | ||
33 | } | ||
34 | |||
35 | /** | ||
36 | * Get the subscribed event systems | ||
37 | * | ||
38 | * @param ClassMetadata $metadata The entity metadata. | ||
39 | * @param string $eventName The entity lifecycle event. | ||
40 | * | ||
41 | * @psalm-return int-mask-of<self::INVOKE_*> Bitmask of subscribed event systems. | ||
42 | */ | ||
43 | public function getSubscribedSystems(ClassMetadata $metadata, string $eventName): int | ||
44 | { | ||
45 | $invoke = self::INVOKE_NONE; | ||
46 | |||
47 | if (isset($metadata->lifecycleCallbacks[$eventName])) { | ||
48 | $invoke |= self::INVOKE_CALLBACKS; | ||
49 | } | ||
50 | |||
51 | if (isset($metadata->entityListeners[$eventName])) { | ||
52 | $invoke |= self::INVOKE_LISTENERS; | ||
53 | } | ||
54 | |||
55 | if ($this->eventManager->hasListeners($eventName)) { | ||
56 | $invoke |= self::INVOKE_MANAGER; | ||
57 | } | ||
58 | |||
59 | return $invoke; | ||
60 | } | ||
61 | |||
62 | /** | ||
63 | * Dispatches the lifecycle event of the given entity. | ||
64 | * | ||
65 | * @param ClassMetadata $metadata The entity metadata. | ||
66 | * @param string $eventName The entity lifecycle event. | ||
67 | * @param object $entity The Entity on which the event occurred. | ||
68 | * @param EventArgs $event The Event args. | ||
69 | * @psalm-param int-mask-of<self::INVOKE_*> $invoke Bitmask to invoke listeners. | ||
70 | */ | ||
71 | public function invoke( | ||
72 | ClassMetadata $metadata, | ||
73 | string $eventName, | ||
74 | object $entity, | ||
75 | EventArgs $event, | ||
76 | int $invoke, | ||
77 | ): void { | ||
78 | if ($invoke & self::INVOKE_CALLBACKS) { | ||
79 | foreach ($metadata->lifecycleCallbacks[$eventName] as $callback) { | ||
80 | $entity->$callback($event); | ||
81 | } | ||
82 | } | ||
83 | |||
84 | if ($invoke & self::INVOKE_LISTENERS) { | ||
85 | foreach ($metadata->entityListeners[$eventName] as $listener) { | ||
86 | $class = $listener['class']; | ||
87 | $method = $listener['method']; | ||
88 | $instance = $this->resolver->resolve($class); | ||
89 | |||
90 | $instance->$method($entity, $event); | ||
91 | } | ||
92 | } | ||
93 | |||
94 | if ($invoke & self::INVOKE_MANAGER) { | ||
95 | $this->eventManager->dispatchEvent($eventName, $event); | ||
96 | } | ||
97 | } | ||
98 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/LoadClassMetadataEventArgs.php b/vendor/doctrine/orm/src/Event/LoadClassMetadataEventArgs.php new file mode 100644 index 0000000..b450616 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/LoadClassMetadataEventArgs.php | |||
@@ -0,0 +1,25 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\ORM\Mapping\ClassMetadata; | ||
9 | use Doctrine\Persistence\Event\LoadClassMetadataEventArgs as BaseLoadClassMetadataEventArgs; | ||
10 | |||
11 | /** | ||
12 | * Class that holds event arguments for a loadMetadata event. | ||
13 | * | ||
14 | * @extends BaseLoadClassMetadataEventArgs<ClassMetadata<object>, EntityManagerInterface> | ||
15 | */ | ||
16 | class LoadClassMetadataEventArgs extends BaseLoadClassMetadataEventArgs | ||
17 | { | ||
18 | /** | ||
19 | * Retrieve associated EntityManager. | ||
20 | */ | ||
21 | public function getEntityManager(): EntityManagerInterface | ||
22 | { | ||
23 | return $this->getObjectManager(); | ||
24 | } | ||
25 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/OnClassMetadataNotFoundEventArgs.php b/vendor/doctrine/orm/src/Event/OnClassMetadataNotFoundEventArgs.php new file mode 100644 index 0000000..762c083 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/OnClassMetadataNotFoundEventArgs.php | |||
@@ -0,0 +1,49 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\Persistence\Event\ManagerEventArgs; | ||
9 | use Doctrine\Persistence\Mapping\ClassMetadata; | ||
10 | use Doctrine\Persistence\ObjectManager; | ||
11 | |||
12 | /** | ||
13 | * Class that holds event arguments for a `onClassMetadataNotFound` event. | ||
14 | * | ||
15 | * This object is mutable by design, allowing callbacks having access to it to set the | ||
16 | * found metadata in it, and therefore "cancelling" a `onClassMetadataNotFound` event | ||
17 | * | ||
18 | * @extends ManagerEventArgs<EntityManagerInterface> | ||
19 | */ | ||
20 | class OnClassMetadataNotFoundEventArgs extends ManagerEventArgs | ||
21 | { | ||
22 | private ClassMetadata|null $foundMetadata = null; | ||
23 | |||
24 | /** @param EntityManagerInterface $objectManager */ | ||
25 | public function __construct( | ||
26 | private readonly string $className, | ||
27 | ObjectManager $objectManager, | ||
28 | ) { | ||
29 | parent::__construct($objectManager); | ||
30 | } | ||
31 | |||
32 | public function setFoundMetadata(ClassMetadata|null $classMetadata): void | ||
33 | { | ||
34 | $this->foundMetadata = $classMetadata; | ||
35 | } | ||
36 | |||
37 | public function getFoundMetadata(): ClassMetadata|null | ||
38 | { | ||
39 | return $this->foundMetadata; | ||
40 | } | ||
41 | |||
42 | /** | ||
43 | * Retrieve class name for which a failed metadata fetch attempt was executed | ||
44 | */ | ||
45 | public function getClassName(): string | ||
46 | { | ||
47 | return $this->className; | ||
48 | } | ||
49 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/OnClearEventArgs.php b/vendor/doctrine/orm/src/Event/OnClearEventArgs.php new file mode 100644 index 0000000..29a42f2 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/OnClearEventArgs.php | |||
@@ -0,0 +1,19 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\Persistence\Event\OnClearEventArgs as BaseOnClearEventArgs; | ||
9 | |||
10 | /** | ||
11 | * Provides event arguments for the onClear event. | ||
12 | * | ||
13 | * @link www.doctrine-project.org | ||
14 | * | ||
15 | * @extends BaseOnClearEventArgs<EntityManagerInterface> | ||
16 | */ | ||
17 | class OnClearEventArgs extends BaseOnClearEventArgs | ||
18 | { | ||
19 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/OnFlushEventArgs.php b/vendor/doctrine/orm/src/Event/OnFlushEventArgs.php new file mode 100644 index 0000000..b0594ca --- /dev/null +++ b/vendor/doctrine/orm/src/Event/OnFlushEventArgs.php | |||
@@ -0,0 +1,19 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\Persistence\Event\ManagerEventArgs; | ||
9 | |||
10 | /** | ||
11 | * Provides event arguments for the preFlush event. | ||
12 | * | ||
13 | * @link www.doctrine-project.org | ||
14 | * | ||
15 | * @extends ManagerEventArgs<EntityManagerInterface> | ||
16 | */ | ||
17 | class OnFlushEventArgs extends ManagerEventArgs | ||
18 | { | ||
19 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/PostFlushEventArgs.php b/vendor/doctrine/orm/src/Event/PostFlushEventArgs.php new file mode 100644 index 0000000..ca41ba8 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PostFlushEventArgs.php | |||
@@ -0,0 +1,19 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\Persistence\Event\ManagerEventArgs; | ||
9 | |||
10 | /** | ||
11 | * Provides event arguments for the postFlush event. | ||
12 | * | ||
13 | * @link www.doctrine-project.org | ||
14 | * | ||
15 | * @extends ManagerEventArgs<EntityManagerInterface> | ||
16 | */ | ||
17 | class PostFlushEventArgs extends ManagerEventArgs | ||
18 | { | ||
19 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/PostLoadEventArgs.php b/vendor/doctrine/orm/src/Event/PostLoadEventArgs.php new file mode 100644 index 0000000..8344e68 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PostLoadEventArgs.php | |||
@@ -0,0 +1,13 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\Persistence\Event\LifecycleEventArgs; | ||
9 | |||
10 | /** @extends LifecycleEventArgs<EntityManagerInterface> */ | ||
11 | final class PostLoadEventArgs extends LifecycleEventArgs | ||
12 | { | ||
13 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/PostPersistEventArgs.php b/vendor/doctrine/orm/src/Event/PostPersistEventArgs.php new file mode 100644 index 0000000..926ac1c --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PostPersistEventArgs.php | |||
@@ -0,0 +1,13 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\Persistence\Event\LifecycleEventArgs; | ||
9 | |||
10 | /** @extends LifecycleEventArgs<EntityManagerInterface> */ | ||
11 | final class PostPersistEventArgs extends LifecycleEventArgs | ||
12 | { | ||
13 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/PostRemoveEventArgs.php b/vendor/doctrine/orm/src/Event/PostRemoveEventArgs.php new file mode 100644 index 0000000..8bf857e --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PostRemoveEventArgs.php | |||
@@ -0,0 +1,13 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\Persistence\Event\LifecycleEventArgs; | ||
9 | |||
10 | /** @extends LifecycleEventArgs<EntityManagerInterface> */ | ||
11 | final class PostRemoveEventArgs extends LifecycleEventArgs | ||
12 | { | ||
13 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/PostUpdateEventArgs.php b/vendor/doctrine/orm/src/Event/PostUpdateEventArgs.php new file mode 100644 index 0000000..c9ff004 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PostUpdateEventArgs.php | |||
@@ -0,0 +1,13 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\Persistence\Event\LifecycleEventArgs; | ||
9 | |||
10 | /** @extends LifecycleEventArgs<EntityManagerInterface> */ | ||
11 | final class PostUpdateEventArgs extends LifecycleEventArgs | ||
12 | { | ||
13 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/PreFlushEventArgs.php b/vendor/doctrine/orm/src/Event/PreFlushEventArgs.php new file mode 100644 index 0000000..671535c --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PreFlushEventArgs.php | |||
@@ -0,0 +1,19 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\Persistence\Event\ManagerEventArgs; | ||
9 | |||
10 | /** | ||
11 | * Provides event arguments for the preFlush event. | ||
12 | * | ||
13 | * @link www.doctrine-project.com | ||
14 | * | ||
15 | * @extends ManagerEventArgs<EntityManagerInterface> | ||
16 | */ | ||
17 | class PreFlushEventArgs extends ManagerEventArgs | ||
18 | { | ||
19 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/PrePersistEventArgs.php b/vendor/doctrine/orm/src/Event/PrePersistEventArgs.php new file mode 100644 index 0000000..e70c3cf --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PrePersistEventArgs.php | |||
@@ -0,0 +1,13 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\Persistence\Event\LifecycleEventArgs; | ||
9 | |||
10 | /** @extends LifecycleEventArgs<EntityManagerInterface> */ | ||
11 | final class PrePersistEventArgs extends LifecycleEventArgs | ||
12 | { | ||
13 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/PreRemoveEventArgs.php b/vendor/doctrine/orm/src/Event/PreRemoveEventArgs.php new file mode 100644 index 0000000..3af0d02 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PreRemoveEventArgs.php | |||
@@ -0,0 +1,13 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\Persistence\Event\LifecycleEventArgs; | ||
9 | |||
10 | /** @extends LifecycleEventArgs<EntityManagerInterface> */ | ||
11 | final class PreRemoveEventArgs extends LifecycleEventArgs | ||
12 | { | ||
13 | } | ||
diff --git a/vendor/doctrine/orm/src/Event/PreUpdateEventArgs.php b/vendor/doctrine/orm/src/Event/PreUpdateEventArgs.php new file mode 100644 index 0000000..090487b --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PreUpdateEventArgs.php | |||
@@ -0,0 +1,100 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\ORM\Event; | ||
6 | |||
7 | use Doctrine\ORM\EntityManagerInterface; | ||
8 | use Doctrine\ORM\PersistentCollection; | ||
9 | use Doctrine\Persistence\Event\LifecycleEventArgs; | ||
10 | use InvalidArgumentException; | ||
11 | |||
12 | use function get_debug_type; | ||
13 | use function sprintf; | ||
14 | |||
15 | /** | ||
16 | * Class that holds event arguments for a preUpdate event. | ||
17 | * | ||
18 | * @extends LifecycleEventArgs<EntityManagerInterface> | ||
19 | */ | ||
20 | class PreUpdateEventArgs extends LifecycleEventArgs | ||
21 | { | ||
22 | /** @var array<string, array{mixed, mixed}|PersistentCollection> */ | ||
23 | private array $entityChangeSet; | ||
24 | |||
25 | /** | ||
26 | * @param mixed[][] $changeSet | ||
27 | * @psalm-param array<string, array{mixed, mixed}|PersistentCollection> $changeSet | ||
28 | */ | ||
29 | public function __construct(object $entity, EntityManagerInterface $em, array &$changeSet) | ||
30 | { | ||
31 | parent::__construct($entity, $em); | ||
32 | |||
33 | $this->entityChangeSet = &$changeSet; | ||
34 | } | ||
35 | |||
36 | /** | ||
37 | * Retrieves entity changeset. | ||
38 | * | ||
39 | * @return mixed[][] | ||
40 | * @psalm-return array<string, array{mixed, mixed}|PersistentCollection> | ||
41 | */ | ||
42 | public function getEntityChangeSet(): array | ||
43 | { | ||
44 | return $this->entityChangeSet; | ||
45 | } | ||
46 | |||
47 | /** | ||
48 | * Checks if field has a changeset. | ||
49 | */ | ||
50 | public function hasChangedField(string $field): bool | ||
51 | { | ||
52 | return isset($this->entityChangeSet[$field]); | ||
53 | } | ||
54 | |||
55 | /** | ||
56 | * Gets the old value of the changeset of the changed field. | ||
57 | */ | ||
58 | public function getOldValue(string $field): mixed | ||
59 | { | ||
60 | $this->assertValidField($field); | ||
61 | |||
62 | return $this->entityChangeSet[$field][0]; | ||
63 | } | ||
64 | |||
65 | /** | ||
66 | * Gets the new value of the changeset of the changed field. | ||
67 | */ | ||
68 | public function getNewValue(string $field): mixed | ||
69 | { | ||
70 | $this->assertValidField($field); | ||
71 | |||
72 | return $this->entityChangeSet[$field][1]; | ||
73 | } | ||
74 | |||
75 | /** | ||
76 | * Sets the new value of this field. | ||
77 | */ | ||
78 | public function setNewValue(string $field, mixed $value): void | ||
79 | { | ||
80 | $this->assertValidField($field); | ||
81 | |||
82 | $this->entityChangeSet[$field][1] = $value; | ||
83 | } | ||
84 | |||
85 | /** | ||
86 | * Asserts the field exists in changeset. | ||
87 | * | ||
88 | * @throws InvalidArgumentException | ||
89 | */ | ||
90 | private function assertValidField(string $field): void | ||
91 | { | ||
92 | if (! isset($this->entityChangeSet[$field])) { | ||
93 | throw new InvalidArgumentException(sprintf( | ||
94 | 'Field "%s" is not a valid field of the entity "%s" in PreUpdateEventArgs.', | ||
95 | $field, | ||
96 | get_debug_type($this->getObject()), | ||
97 | )); | ||
98 | } | ||
99 | } | ||
100 | } | ||