From 873a72f88bb1210eed6a0df698b16aac368fc716 Mon Sep 17 00:00:00 2001 From: Fran Moreno <franmomu@gmail.com> Date: Sun, 1 May 2022 10:52:11 +0200 Subject: [PATCH] Add some generic information --- lib/Doctrine/ODM/MongoDB/Configuration.php | 12 ++++++------ lib/Doctrine/ODM/MongoDB/DocumentManager.php | 4 ++-- .../AbstractPersistentCollectionFactory.php | 4 ++++ .../PersistentCollectionFactory.php | 3 +++ .../ODM/MongoDB/Persisters/PersistenceBuilder.php | 3 ++- lib/Doctrine/ODM/MongoDB/Query/FilterCollection.php | 2 ++ lib/Doctrine/ODM/MongoDB/Query/ReferencePrimer.php | 6 ++++-- 7 files changed, 23 insertions(+), 11 deletions(-) diff --git a/lib/Doctrine/ODM/MongoDB/Configuration.php b/lib/Doctrine/ODM/MongoDB/Configuration.php index cb0a1e4bba..8aadb2ab11 100644 --- a/lib/Doctrine/ODM/MongoDB/Configuration.php +++ b/lib/Doctrine/ODM/MongoDB/Configuration.php @@ -89,8 +89,8 @@ class Configuration * autoGeneratePersistentCollectionClasses?: self::AUTOGENERATE_*, * classMetadataFactoryName?: class-string<ClassMetadataFactory>, * defaultCommitOptions?: CommitOptions, - * defaultDocumentRepositoryClassName?: class-string<ObjectRepository>, - * defaultGridFSRepositoryClassName?: class-string<GridFSRepository>, + * defaultDocumentRepositoryClassName?: class-string<ObjectRepository<object>>, + * defaultGridFSRepositoryClassName?: class-string<GridFSRepository<object>>, * defaultDB?: string, * documentNamespaces?: array<string, string>, * filters?: array<string, array{ @@ -488,7 +488,7 @@ public function getFilterParameters(string $name): array } /** - * @psalm-param class-string<ObjectRepository> $className + * @psalm-param class-string<ObjectRepository<object>> $className * * @throws MongoDBException If not is a ObjectRepository. */ @@ -504,7 +504,7 @@ public function setDefaultDocumentRepositoryClassName(string $className): void } /** - * @psalm-return class-string<ObjectRepository> + * @psalm-return class-string<ObjectRepository<object>> */ public function getDefaultDocumentRepositoryClassName(): string { @@ -512,7 +512,7 @@ public function getDefaultDocumentRepositoryClassName(): string } /** - * @psalm-param class-string<GridFSRepository> $className + * @psalm-param class-string<GridFSRepository<object>> $className * * @throws MongoDBException If the class does not implement the GridFSRepository interface. */ @@ -528,7 +528,7 @@ public function setDefaultGridFSRepositoryClassName(string $className): void } /** - * @psalm-return class-string<GridFSRepository> + * @psalm-return class-string<GridFSRepository<object>> */ public function getDefaultGridFSRepositoryClassName(): string { diff --git a/lib/Doctrine/ODM/MongoDB/DocumentManager.php b/lib/Doctrine/ODM/MongoDB/DocumentManager.php index 13c9dc9b53..9b323c430b 100644 --- a/lib/Doctrine/ODM/MongoDB/DocumentManager.php +++ b/lib/Doctrine/ODM/MongoDB/DocumentManager.php @@ -817,8 +817,8 @@ public function createReference(object $document, array $referenceMapping) /** * Build discriminator portion of reference for specified reference mapping and class metadata. * - * @param array $referenceMapping Mappings of reference for which discriminator data is created. - * @param ClassMetadata $class Metadata of reference document class. + * @param array $referenceMapping Mappings of reference for which discriminator data is created. + * @param ClassMetadata<object> $class Metadata of reference document class. * @psalm-param FieldMapping $referenceMapping * * @return array with next structure [{discriminator field} => {discriminator value}] diff --git a/lib/Doctrine/ODM/MongoDB/PersistentCollection/AbstractPersistentCollectionFactory.php b/lib/Doctrine/ODM/MongoDB/PersistentCollection/AbstractPersistentCollectionFactory.php index a572b51cd5..b562889c04 100644 --- a/lib/Doctrine/ODM/MongoDB/PersistentCollection/AbstractPersistentCollectionFactory.php +++ b/lib/Doctrine/ODM/MongoDB/PersistentCollection/AbstractPersistentCollectionFactory.php @@ -36,8 +36,12 @@ public function create(DocumentManager $dm, array $mapping, ?BaseCollection $col * Creates instance of collection class to be wrapped by PersistentCollection. * * @param string $collectionClass FQCN of class to instantiate + * @psalm-param class-string<TDocument> $collectionClass * * @return BaseCollection + * @psalm-return BaseCollection<array-key, TDocument> + * + * @template TDocument of object */ abstract protected function createCollectionClass(string $collectionClass): BaseCollection; } diff --git a/lib/Doctrine/ODM/MongoDB/PersistentCollection/PersistentCollectionFactory.php b/lib/Doctrine/ODM/MongoDB/PersistentCollection/PersistentCollectionFactory.php index 56d5fa0059..39b163132e 100644 --- a/lib/Doctrine/ODM/MongoDB/PersistentCollection/PersistentCollectionFactory.php +++ b/lib/Doctrine/ODM/MongoDB/PersistentCollection/PersistentCollectionFactory.php @@ -19,6 +19,9 @@ interface PersistentCollectionFactory * Creates specified persistent collection to work with given collection class. * * @psalm-param FieldMapping $mapping + * @psalm-param BaseCollection<array-key, object>|null $coll + * + * @psalm-return PersistentCollectionInterface<array-key, object> */ public function create(DocumentManager $dm, array $mapping, ?BaseCollection $coll = null): PersistentCollectionInterface; } diff --git a/lib/Doctrine/ODM/MongoDB/Persisters/PersistenceBuilder.php b/lib/Doctrine/ODM/MongoDB/Persisters/PersistenceBuilder.php index faf5cbb813..cfc548fda5 100644 --- a/lib/Doctrine/ODM/MongoDB/Persisters/PersistenceBuilder.php +++ b/lib/Doctrine/ODM/MongoDB/Persisters/PersistenceBuilder.php @@ -488,7 +488,8 @@ public function prepareAssociatedDocumentValue(array $mapping, $document, $inclu /** * Returns the collection representation to be stored and unschedules it afterwards. * - * @param bool $includeNestedCollections + * @param PersistentCollectionInterface<array-key, object> $coll + * @param bool $includeNestedCollections * * @return mixed[] */ diff --git a/lib/Doctrine/ODM/MongoDB/Query/FilterCollection.php b/lib/Doctrine/ODM/MongoDB/Query/FilterCollection.php index 638f5e56b0..13ff85d3a7 100644 --- a/lib/Doctrine/ODM/MongoDB/Query/FilterCollection.php +++ b/lib/Doctrine/ODM/MongoDB/Query/FilterCollection.php @@ -145,6 +145,8 @@ public function isEnabled(string $name): bool /** * Gets enabled filter criteria. * + * @param ClassMetadata<object> $class + * * @return array<string, mixed> */ public function getFilterCriteria(ClassMetadata $class): array diff --git a/lib/Doctrine/ODM/MongoDB/Query/ReferencePrimer.php b/lib/Doctrine/ODM/MongoDB/Query/ReferencePrimer.php index 44131380c9..4146d52d44 100644 --- a/lib/Doctrine/ODM/MongoDB/Query/ReferencePrimer.php +++ b/lib/Doctrine/ODM/MongoDB/Query/ReferencePrimer.php @@ -96,7 +96,7 @@ public function __construct(DocumentManager $dm, UnitOfWork $uow) * the default primer defined in the constructor. If $primer is not * callable, the default primer will be used. * - * @param ClassMetadata $class Class metadata for the document + * @param ClassMetadata<object> $class Class metadata for the document * @param array<object>|Traversable<object> $documents Documents containing references to prime * @param string $fieldName Field name containing references to prime * @param array $hints UnitOfWork hints for priming queries @@ -167,10 +167,11 @@ public function primeReferences(ClassMetadata $class, $documents, string $fieldN * ... but you cannot prime this: myDocument.embeddedDocument.referencedDocuments.referencedDocument(s) * This addresses Issue #624. * + * @param ClassMetadata<object> $class * @param array<object>|Traversable<object> $documents * @param FieldMapping|null $mapping * - * @return array{fieldName: string, class: ClassMetadata, documents: array<object>|Traversable<object>, mapping: FieldMapping} + * @return array{fieldName: string, class: ClassMetadata<object>, documents: array<object>|Traversable<object>, mapping: FieldMapping} */ private function parseDotSyntaxForPrimer(string $fieldName, ClassMetadata $class, $documents, ?array $mapping = null): array { @@ -245,6 +246,7 @@ private function parseDotSyntaxForPrimer(string $fieldName, ClassMetadata $class * have a target document class defined. Without that, there is no way to * infer the class of the referenced documents. * + * @param PersistentCollectionInterface<array-key, object> $persistentCollection * @psalm-param array<class-string, array<string, mixed>> $groupedIds */ private function addManyReferences(PersistentCollectionInterface $persistentCollection, array &$groupedIds): void