From 5d7153fdfe7f7d602da5068d3faed88b91f306fb Mon Sep 17 00:00:00 2001 From: "Alexander M. Turek" Date: Wed, 6 Apr 2022 14:24:58 +0200 Subject: [PATCH] Leverage generic persistence event classes --- lib/Doctrine/ORM/Event/LifecycleEventArgs.php | 2 +- .../ORM/Event/LoadClassMetadataEventArgs.php | 3 +-- .../OnClassMetadataNotFoundEventArgs.php | 6 ++++- phpstan-baseline.neon | 11 +--------- psalm-baseline.xml | 22 +++++-------------- .../EventListener/CacheMetadataListener.php | 6 ++--- 6 files changed, 16 insertions(+), 34 deletions(-) diff --git a/lib/Doctrine/ORM/Event/LifecycleEventArgs.php b/lib/Doctrine/ORM/Event/LifecycleEventArgs.php index 24a0bf22d5f..0bd4ab9572d 100644 --- a/lib/Doctrine/ORM/Event/LifecycleEventArgs.php +++ b/lib/Doctrine/ORM/Event/LifecycleEventArgs.php @@ -11,7 +11,7 @@ * Lifecycle Events are triggered by the UnitOfWork during lifecycle transitions * of entities. * - * @link www.doctrine-project.org + * @extends BaseLifecycleEventArgs */ class LifecycleEventArgs extends BaseLifecycleEventArgs { diff --git a/lib/Doctrine/ORM/Event/LoadClassMetadataEventArgs.php b/lib/Doctrine/ORM/Event/LoadClassMetadataEventArgs.php index 815575cf2b7..94adb108c74 100644 --- a/lib/Doctrine/ORM/Event/LoadClassMetadataEventArgs.php +++ b/lib/Doctrine/ORM/Event/LoadClassMetadataEventArgs.php @@ -11,8 +11,7 @@ /** * Class that holds event arguments for a loadMetadata event. * - * @method __construct(ClassMetadata $classMetadata, EntityManagerInterface $objectManager) - * @method ClassMetadata getClassMetadata() + * @extends BaseLoadClassMetadataEventArgs, EntityManagerInterface> */ class LoadClassMetadataEventArgs extends BaseLoadClassMetadataEventArgs { diff --git a/lib/Doctrine/ORM/Event/OnClassMetadataNotFoundEventArgs.php b/lib/Doctrine/ORM/Event/OnClassMetadataNotFoundEventArgs.php index 6bb56bb6b8c..20674f602b2 100644 --- a/lib/Doctrine/ORM/Event/OnClassMetadataNotFoundEventArgs.php +++ b/lib/Doctrine/ORM/Event/OnClassMetadataNotFoundEventArgs.php @@ -4,6 +4,7 @@ namespace Doctrine\ORM\Event; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\Persistence\Event\ManagerEventArgs; use Doctrine\Persistence\Mapping\ClassMetadata; use Doctrine\Persistence\ObjectManager; @@ -13,6 +14,8 @@ * * This object is mutable by design, allowing callbacks having access to it to set the * found metadata in it, and therefore "cancelling" a `onClassMetadataNotFound` event + * + * @extends ManagerEventArgs */ class OnClassMetadataNotFoundEventArgs extends ManagerEventArgs { @@ -23,7 +26,8 @@ class OnClassMetadataNotFoundEventArgs extends ManagerEventArgs private $foundMetadata; /** - * @param string $className + * @param string $className + * @param EntityManagerInterface $objectManager */ public function __construct($className, ObjectManager $objectManager) { diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index ae4540f8be9..bb7e666e893 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -160,16 +160,6 @@ parameters: count: 1 path: lib/Doctrine/ORM/EntityRepository.php - - - message: "#^Method Doctrine\\\\ORM\\\\Event\\\\LifecycleEventArgs\\:\\:getEntityManager\\(\\) should return Doctrine\\\\ORM\\\\EntityManagerInterface but returns Doctrine\\\\Persistence\\\\ObjectManager\\.$#" - count: 1 - path: lib/Doctrine/ORM/Event/LifecycleEventArgs.php - - - - message: "#^Method Doctrine\\\\ORM\\\\Event\\\\LoadClassMetadataEventArgs\\:\\:getEntityManager\\(\\) should return Doctrine\\\\ORM\\\\EntityManagerInterface but returns Doctrine\\\\Persistence\\\\ObjectManager\\.$#" - count: 1 - path: lib/Doctrine/ORM/Event/LoadClassMetadataEventArgs.php - - message: "#^Call to an undefined method Doctrine\\\\DBAL\\\\Platforms\\\\AbstractPlatform\\:\\:getTableHiLoCurrentValSql\\(\\)\\.$#" count: 1 @@ -1744,3 +1734,4 @@ parameters: message: "#^Access to an undefined property Doctrine\\\\Persistence\\\\Mapping\\\\ClassMetadata\\:\\:\\$subClasses\\.$#" count: 1 path: lib/Doctrine/ORM/Utility/HierarchyDiscriminatorResolver.php + diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 7ecfa8d3dbb..15b341dee31 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -346,22 +346,6 @@ find - - - $this->getObjectManager() - - - EntityManagerInterface - - - - - $this->getObjectManager() - - - EntityManagerInterface - - (string) $className @@ -2662,6 +2646,12 @@ + + $this->repositoryList[$repositoryHash] = $this->createRepository($entityManager, $entityName) + + + ObjectRepository + $repository instanceof EntityRepository diff --git a/tests/Doctrine/Tests/EventListener/CacheMetadataListener.php b/tests/Doctrine/Tests/EventListener/CacheMetadataListener.php index 612a90a9c3a..72d59d995a2 100644 --- a/tests/Doctrine/Tests/EventListener/CacheMetadataListener.php +++ b/tests/Doctrine/Tests/EventListener/CacheMetadataListener.php @@ -5,10 +5,9 @@ namespace Doctrine\Tests\EventListener; use Doctrine\ORM\EntityManagerInterface; +use Doctrine\ORM\Event\LoadClassMetadataEventArgs; use Doctrine\ORM\Mapping\ClassMetadata; -use Doctrine\Persistence\Event\LoadClassMetadataEventArgs; -use function assert; use function strstr; class CacheMetadataListener @@ -26,8 +25,7 @@ class CacheMetadataListener public function loadClassMetadata(LoadClassMetadataEventArgs $event): void { $metadata = $event->getClassMetadata(); - assert($metadata instanceof ClassMetadata); - $em = $event->getObjectManager(); + $em = $event->getObjectManager(); if (strstr($metadata->name, 'Doctrine\Tests\Models\Cache')) { return;