From b9fe5cdd3fe77285574c21abd70368b96e31eec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Tamarelle?= Date: Fri, 15 Dec 2023 09:26:53 +0100 Subject: [PATCH] Add return types --- UPGRADE.md | 7 +++++++ src/AbstractFixture.php | 8 ++++---- src/Executor/AbstractExecutor.php | 32 +++++++++--------------------- src/Executor/MongoDBExecutor.php | 8 +++----- src/Executor/ORMExecutor.php | 2 +- src/Executor/ORMExecutorCommon.php | 6 ++---- src/Executor/PHPCRExecutor.php | 5 ++--- src/Loader.php | 14 ++++++------- src/OrderedFixtureInterface.php | 2 +- src/ProxyReferenceRepository.php | 8 ++++---- src/Purger/MongoDBPurger.php | 10 +++------- src/Purger/ORMPurger.php | 18 +++++------------ src/Purger/ORMPurgerInterface.php | 4 +--- src/Purger/PHPCRPurger.php | 7 +++---- src/Purger/PurgerInterface.php | 4 +--- src/ReferenceRepository.php | 22 ++++++++++---------- src/Sorter/TopologicalSorter.php | 10 +++++----- 17 files changed, 69 insertions(+), 98 deletions(-) diff --git a/UPGRADE.md b/UPGRADE.md index b9564333..e0dbf775 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -6,6 +6,13 @@ awareness about deprecated code. - Use of our low-overhead runtime deprecation API, details: https://github.com/doctrine/deprecations/ +# Upgrade to 2.0 + +## BC BREAK: Add return types to all the methods + +All return types defined in phpdoc `@return` are now defined in the method signature, +they must be added to your code if you extend the classes or implement the interfaces. + # Upgrade to 1.8 Executor and Purger classes are final, they cannot be extended. diff --git a/src/AbstractFixture.php b/src/AbstractFixture.php index 41b757b5..6a7df4de 100644 --- a/src/AbstractFixture.php +++ b/src/AbstractFixture.php @@ -49,7 +49,7 @@ private function getReferenceRepository(): ReferenceRepository * * @return void */ - public function setReference(string $name, object $object) + public function setReference(string $name, object $object): void { $this->getReferenceRepository()->setReference($name, $object); } @@ -68,7 +68,7 @@ public function setReference(string $name, object $object) * * @throws BadMethodCallException - if repository already has a reference by $name. */ - public function addReference(string $name, object $object) + public function addReference(string $name, object $object): void { $this->getReferenceRepository()->addReference($name, $object); } @@ -86,7 +86,7 @@ public function addReference(string $name, object $object) * * @template T of object */ - public function getReference(string $name, ?string $class = null) + public function getReference(string $name, ?string $class = null): object { if ($class === null) { Deprecation::trigger( @@ -110,7 +110,7 @@ public function getReference(string $name, ?string $class = null) * * @return bool */ - public function hasReference(string $name, ?string $class = null) + public function hasReference(string $name, ?string $class = null): bool { if ($class === null) { Deprecation::trigger( diff --git a/src/Executor/AbstractExecutor.php b/src/Executor/AbstractExecutor.php index f1bcdd82..4ddcbad9 100644 --- a/src/Executor/AbstractExecutor.php +++ b/src/Executor/AbstractExecutor.php @@ -48,49 +48,41 @@ public function __construct(ObjectManager $manager) $this->referenceRepository = new ReferenceRepository($manager); } - /** @return ReferenceRepository */ - public function getReferenceRepository() + public function getReferenceRepository(): ReferenceRepository { return $this->referenceRepository; } - public function setReferenceRepository(ReferenceRepository $referenceRepository) + public function setReferenceRepository(ReferenceRepository $referenceRepository): void { $this->referenceRepository = $referenceRepository; } /** * Sets the Purger instance to use for this executor instance. - * - * @return void */ - public function setPurger(PurgerInterface $purger) + public function setPurger(PurgerInterface $purger): void { $this->purger = $purger; } - /** @return PurgerInterface */ - public function getPurger() + public function getPurger(): PurgerInterface { return $this->purger; } /** * Set the logger callable to execute with the log() method. - * - * @return void */ - public function setLogger(callable $logger) + public function setLogger(callable $logger): void { $this->logger = $logger; } /** * Logs a message using the logger. - * - * @return void */ - public function log(string $message) + public function log(string $message): void { $logger = $this->logger; $logger($message); @@ -98,10 +90,8 @@ public function log(string $message) /** * Load a fixture with the given persistence manager. - * - * @return void */ - public function load(ObjectManager $manager, FixtureInterface $fixture) + public function load(ObjectManager $manager, FixtureInterface $fixture): void { if ($this->logger) { $prefix = ''; @@ -124,11 +114,9 @@ public function load(ObjectManager $manager, FixtureInterface $fixture) /** * Purges the database before loading. * - * @return void - * * @throws Exception if the purger is not defined. */ - public function purge() + public function purge(): void { if ($this->purger === null) { throw new Exception( @@ -149,8 +137,6 @@ public function purge() * * @param FixtureInterface[] $fixtures Array of fixtures to execute. * @param bool $append Whether to append the data fixtures or purge the database before loading. - * - * @return void */ - abstract public function execute(array $fixtures, bool $append = false); + abstract public function execute(array $fixtures, bool $append = false): void; } diff --git a/src/Executor/MongoDBExecutor.php b/src/Executor/MongoDBExecutor.php index c3d91424..2ba42c7f 100644 --- a/src/Executor/MongoDBExecutor.php +++ b/src/Executor/MongoDBExecutor.php @@ -40,16 +40,14 @@ public function __construct(DocumentManager $dm, ?MongoDBPurger $purger = null) /** * Retrieve the DocumentManager instance this executor instance is using. - * - * @return DocumentManager */ - public function getObjectManager() + public function getObjectManager(): DocumentManager { return $this->dm; } /** @inheritDoc */ - public function setReferenceRepository(ReferenceRepository $referenceRepository) + public function setReferenceRepository(ReferenceRepository $referenceRepository): void { $this->dm->getEventManager()->removeEventListener( $this->listener->getSubscribedEvents(), @@ -62,7 +60,7 @@ public function setReferenceRepository(ReferenceRepository $referenceRepository) } /** @inheritDoc */ - public function execute(array $fixtures, bool $append = false) + public function execute(array $fixtures, bool $append = false): void { if ($append === false) { $this->purge(); diff --git a/src/Executor/ORMExecutor.php b/src/Executor/ORMExecutor.php index 1ce9014a..a9cab1ba 100644 --- a/src/Executor/ORMExecutor.php +++ b/src/Executor/ORMExecutor.php @@ -16,7 +16,7 @@ class ORMExecutor extends AbstractExecutor use ORMExecutorCommon; /** @inheritDoc */ - public function execute(array $fixtures, bool $append = false) + public function execute(array $fixtures, bool $append = false): void { $executor = $this; $this->em->wrapInTransaction(static function (EntityManagerInterface $em) use ($executor, $fixtures, $append) { diff --git a/src/Executor/ORMExecutorCommon.php b/src/Executor/ORMExecutorCommon.php index 7b7330ea..a2f249f5 100644 --- a/src/Executor/ORMExecutorCommon.php +++ b/src/Executor/ORMExecutorCommon.php @@ -43,16 +43,14 @@ public function __construct(EntityManagerInterface $em, ?ORMPurgerInterface $pur /** * Retrieve the EntityManagerInterface instance this executor instance is using. - * - * @return EntityManagerInterface */ - public function getObjectManager() + public function getObjectManager(): EntityManagerInterface { return $this->originalManager; } /** @inheritDoc */ - public function setReferenceRepository(ReferenceRepository $referenceRepository) + public function setReferenceRepository(ReferenceRepository $referenceRepository): void { $this->em->getEventManager()->removeEventListener( $this->listener->getSubscribedEvents(), diff --git a/src/Executor/PHPCRExecutor.php b/src/Executor/PHPCRExecutor.php index dc62a35c..9e080aea 100644 --- a/src/Executor/PHPCRExecutor.php +++ b/src/Executor/PHPCRExecutor.php @@ -35,14 +35,13 @@ public function __construct(DocumentManagerInterface $dm, ?PHPCRPurger $purger = $this->setPurger($purger); } - /** @return DocumentManagerInterface */ - public function getObjectManager() + public function getObjectManager(): DocumentManagerInterface { return $this->dm; } /** @inheritDoc */ - public function execute(array $fixtures, bool $append = false) + public function execute(array $fixtures, bool $append = false): void { $that = $this; diff --git a/src/Loader.php b/src/Loader.php index ea406d2f..4749610a 100644 --- a/src/Loader.php +++ b/src/Loader.php @@ -73,7 +73,7 @@ class Loader * * @return array $fixtures Array of loaded fixture object instances. */ - public function loadFromDirectory(string $dir) + public function loadFromDirectory(string $dir): array { if (! is_dir($dir)) { throw new InvalidArgumentException(sprintf('"%s" does not exist', $dir)); @@ -94,7 +94,7 @@ public function loadFromDirectory(string $dir) * * @return array $fixtures Array of loaded fixture object instances. */ - public function loadFromFile(string $fileName) + public function loadFromFile(string $fileName): array { if (! is_readable($fileName)) { throw new InvalidArgumentException(sprintf('"%s" does not exist or is not readable', $fileName)); @@ -110,7 +110,7 @@ public function loadFromFile(string $fileName) * * @return bool */ - public function hasFixture(FixtureInterface $fixture) + public function hasFixture(FixtureInterface $fixture): bool { return isset($this->fixtures[get_class($fixture)]); } @@ -120,7 +120,7 @@ public function hasFixture(FixtureInterface $fixture) * * @return FixtureInterface */ - public function getFixture(string $className) + public function getFixture(string $className): FixtureInterface { if (! isset($this->fixtures[$className])) { throw new InvalidArgumentException(sprintf( @@ -200,7 +200,7 @@ public function getFixtures() * * @return bool */ - public function isTransient(string $className) + public function isTransient(string $className): bool { $rc = new ReflectionClass($className); if ($rc->isAbstract()) { @@ -217,7 +217,7 @@ public function isTransient(string $className) * * @return FixtureInterface */ - protected function createFixture(string $class) + protected function createFixture(string $class): FixtureInterface { return new $class(); } @@ -256,7 +256,7 @@ private function orderFixturesByNumber(): void * * @return void */ - private function orderFixturesByDependencies() + private function orderFixturesByDependencies(): void { /** @psalm-var array, int> */ $sequenceForClasses = []; diff --git a/src/OrderedFixtureInterface.php b/src/OrderedFixtureInterface.php index e5959260..fe1e2a98 100644 --- a/src/OrderedFixtureInterface.php +++ b/src/OrderedFixtureInterface.php @@ -16,5 +16,5 @@ interface OrderedFixtureInterface * * @return int */ - public function getOrder(); + public function getOrder(): int; } diff --git a/src/ProxyReferenceRepository.php b/src/ProxyReferenceRepository.php index 605ef481..a0a6326e 100644 --- a/src/ProxyReferenceRepository.php +++ b/src/ProxyReferenceRepository.php @@ -24,7 +24,7 @@ class ProxyReferenceRepository extends ReferenceRepository * * @return string */ - public function serialize() + public function serialize(): string { $unitOfWork = $this->getManager()->getUnitOfWork(); $simpleReferences = []; @@ -49,7 +49,7 @@ public function serialize() * * @return void */ - public function unserialize(string $serializedData) + public function unserialize(string $serializedData): void { $repositoryData = unserialize($serializedData); @@ -98,7 +98,7 @@ public function unserialize(string $serializedData) * * @return bool */ - public function load(string $baseCacheName) + public function load(string $baseCacheName): bool { $filename = $baseCacheName . '.ser'; @@ -124,7 +124,7 @@ public function load(string $baseCacheName) * * @return void */ - public function save(string $baseCacheName) + public function save(string $baseCacheName): void { $serializedData = $this->serialize(); diff --git a/src/Purger/MongoDBPurger.php b/src/Purger/MongoDBPurger.php index dfbc3767..99486d83 100644 --- a/src/Purger/MongoDBPurger.php +++ b/src/Purger/MongoDBPurger.php @@ -27,26 +27,22 @@ public function __construct(?DocumentManager $dm = null) /** * Set the DocumentManager instance this purger instance should use. - * - * @return void */ - public function setDocumentManager(DocumentManager $dm) + public function setDocumentManager(DocumentManager $dm): void { $this->dm = $dm; } /** * Retrieve the DocumentManager instance this purger instance is using. - * - * @return DocumentManager */ - public function getObjectManager() + public function getObjectManager(): DocumentManager { return $this->dm; } /** @inheritDoc */ - public function purge() + public function purge(): void { $metadatas = $this->dm->getMetadataFactory()->getAllMetadata(); foreach ($metadatas as $metadata) { diff --git a/src/Purger/ORMPurger.php b/src/Purger/ORMPurger.php index ba820377..fe517560 100644 --- a/src/Purger/ORMPurger.php +++ b/src/Purger/ORMPurger.php @@ -60,10 +60,8 @@ public function __construct(?EntityManagerInterface $em = null, array $excluded /** * Set the purge mode - * - * @return void */ - public function setPurgeMode(int $mode) + public function setPurgeMode(int $mode): void { $this->purgeMode = $mode; $this->cachedSqlStatements = null; @@ -71,16 +69,13 @@ public function setPurgeMode(int $mode) /** * Get the purge mode - * - * @return int */ - public function getPurgeMode() + public function getPurgeMode(): int { return $this->purgeMode; } - /** @inheritDoc */ - public function setEntityManager(EntityManagerInterface $em) + public function setEntityManager(EntityManagerInterface $em): void { $this->em = $em; $this->cachedSqlStatements = null; @@ -88,16 +83,13 @@ public function setEntityManager(EntityManagerInterface $em) /** * Retrieve the EntityManagerInterface instance this purger instance is using. - * - * @return EntityManagerInterface */ - public function getObjectManager() + public function getObjectManager(): EntityManagerInterface { return $this->em; } - /** @inheritDoc */ - public function purge() + public function purge(): void { $connection = $this->em->getConnection(); array_map([$connection, 'executeStatement'], $this->getPurgeStatements()); diff --git a/src/Purger/ORMPurgerInterface.php b/src/Purger/ORMPurgerInterface.php index b02157af..aa3f3781 100644 --- a/src/Purger/ORMPurgerInterface.php +++ b/src/Purger/ORMPurgerInterface.php @@ -13,8 +13,6 @@ interface ORMPurgerInterface extends PurgerInterface { /** * Set the EntityManagerInterface instance this purger instance should use. - * - * @return void */ - public function setEntityManager(EntityManagerInterface $em); + public function setEntityManager(EntityManagerInterface $em): void; } diff --git a/src/Purger/PHPCRPurger.php b/src/Purger/PHPCRPurger.php index 01da74ef..a3f3ca48 100644 --- a/src/Purger/PHPCRPurger.php +++ b/src/Purger/PHPCRPurger.php @@ -22,19 +22,18 @@ public function __construct(?DocumentManagerInterface $dm = null) $this->dm = $dm; } - public function setDocumentManager(DocumentManager $dm) + public function setDocumentManager(DocumentManager $dm): void { $this->dm = $dm; } - /** @return DocumentManagerInterface|null */ - public function getObjectManager() + public function getObjectManager(): ?DocumentManagerInterface { return $this->dm; } /** @inheritDoc */ - public function purge() + public function purge(): void { $session = $this->dm->getPhpcrSession(); NodeHelper::purgeWorkspace($session); diff --git a/src/Purger/PurgerInterface.php b/src/Purger/PurgerInterface.php index c41ea508..e682ad95 100644 --- a/src/Purger/PurgerInterface.php +++ b/src/Purger/PurgerInterface.php @@ -11,8 +11,6 @@ interface PurgerInterface { /** * Purge the data from the database for the given EntityManager. - * - * @return void */ - public function purge(); + public function purge(): void; } diff --git a/src/ReferenceRepository.php b/src/ReferenceRepository.php index 60ede99f..d359ef6f 100644 --- a/src/ReferenceRepository.php +++ b/src/ReferenceRepository.php @@ -75,7 +75,7 @@ public function __construct(ObjectManager $manager) * * @return array */ - protected function getIdentifier(object $reference, object $uow) + protected function getIdentifier(object $reference, object $uow): array { // In case Reference is not yet managed in UnitOfWork if (! $this->hasIdentifier($reference)) { @@ -105,7 +105,7 @@ protected function getIdentifier(object $reference, object $uow) * * @return void */ - public function setReference(string $name, object $reference) + public function setReference(string $name, object $reference): void { $class = $this->getRealClass(get_class($reference)); @@ -136,7 +136,7 @@ public function setReference(string $name, object $reference) * * @return void */ - public function setReferenceIdentity(string $name, $identity, ?string $class = null) + public function setReferenceIdentity(string $name, $identity, ?string $class = null): void { if ($class === null) { Deprecation::trigger( @@ -168,7 +168,7 @@ public function setReferenceIdentity(string $name, $identity, ?string $class = n * * @throws BadMethodCallException - if repository already has a reference by $name. */ - public function addReference(string $name, object $object) + public function addReference(string $name, object $object): void { // For BC, to be removed in next major. if (isset($this->references[$name])) { @@ -203,7 +203,7 @@ public function addReference(string $name, object $object) * * @template T of object */ - public function getReference(string $name, ?string $class = null) + public function getReference(string $name, ?string $class = null): object { if ($class === null) { Deprecation::trigger( @@ -254,7 +254,7 @@ public function getReference(string $name, ?string $class = null) * * @return bool */ - public function hasReference(string $name, ?string $class = null) + public function hasReference(string $name, ?string $class = null): bool { if ($class === null) { Deprecation::trigger( @@ -276,7 +276,7 @@ public function hasReference(string $name, ?string $class = null) * * @return array */ - public function getReferenceNames(object $reference) + public function getReferenceNames(object $reference): array { $class = $this->getRealClass(get_class($reference)); if (! isset($this->referencesByClass[$class])) { @@ -293,7 +293,7 @@ public function getReferenceNames(object $reference) * * @return bool */ - public function hasIdentity(string $name, ?string $class = null) + public function hasIdentity(string $name, ?string $class = null): bool { if ($class === null) { Deprecation::trigger( @@ -358,7 +358,7 @@ public function getReferencesByClass(): array * * @return ObjectManager */ - public function getManager() + public function getManager(): ObjectManager { return $this->manager; } @@ -370,7 +370,7 @@ public function getManager() * * @return string */ - protected function getRealClass(string $className) + protected function getRealClass(string $className): string { return $this->manager->getClassMetadata($className)->getName(); } @@ -380,7 +380,7 @@ protected function getRealClass(string $className) * * @return bool */ - private function hasIdentifier(object $reference) + private function hasIdentifier(object $reference): bool { // in case if reference is set after flush, store its identity $uow = $this->manager->getUnitOfWork(); diff --git a/src/Sorter/TopologicalSorter.php b/src/Sorter/TopologicalSorter.php index a1334f39..03ee4c44 100644 --- a/src/Sorter/TopologicalSorter.php +++ b/src/Sorter/TopologicalSorter.php @@ -53,7 +53,7 @@ public function __construct(bool $allowCyclicDependencies = true) * * @return void */ - public function addNode(string $hash, ClassMetadata $node) + public function addNode(string $hash, ClassMetadata $node): void { $this->nodeList[$hash] = new Vertex($node); } @@ -63,7 +63,7 @@ public function addNode(string $hash, ClassMetadata $node) * * @return bool */ - public function hasNode(string $hash) + public function hasNode(string $hash): bool { return isset($this->nodeList[$hash]); } @@ -73,7 +73,7 @@ public function hasNode(string $hash) * * @return void */ - public function addDependency(string $fromHash, string $toHash) + public function addDependency(string $fromHash, string $toHash): void { $definition = $this->nodeList[$fromHash]; @@ -91,7 +91,7 @@ public function addDependency(string $fromHash, string $toHash) * @throws RuntimeException * @throws CircularReferenceException */ - public function sort() + public function sort(): array { foreach ($this->nodeList as $definition) { if ($definition->state !== Vertex::NOT_VISITED) { @@ -119,7 +119,7 @@ public function sort() * @throws RuntimeException * @throws CircularReferenceException */ - private function visit(Vertex $definition) + private function visit(Vertex $definition): void { $definition->state = Vertex::IN_PROGRESS;