diff --git a/lib/Doctrine/ODM/PHPCR/Decorator/DocumentManagerDecorator.php b/lib/Doctrine/ODM/PHPCR/Decorator/DocumentManagerDecorator.php index ea5de65ff..98a6ca877 100644 --- a/lib/Doctrine/ODM/PHPCR/Decorator/DocumentManagerDecorator.php +++ b/lib/Doctrine/ODM/PHPCR/Decorator/DocumentManagerDecorator.php @@ -242,4 +242,9 @@ public function getDocumentId(object $document): string { return $this->wrapped->getDocumentId($document); } + + public function isUninitializedObject(mixed $value): bool + { + return $this->wrapped->isUninitializedObject($value); + } } diff --git a/lib/Doctrine/ODM/PHPCR/DocumentManager.php b/lib/Doctrine/ODM/PHPCR/DocumentManager.php index 18d9001fd..215b0ba59 100644 --- a/lib/Doctrine/ODM/PHPCR/DocumentManager.php +++ b/lib/Doctrine/ODM/PHPCR/DocumentManager.php @@ -19,6 +19,7 @@ use Doctrine\ODM\PHPCR\Translation\TranslationStrategy\ChildTranslationStrategy; use Doctrine\ODM\PHPCR\Translation\TranslationStrategy\TranslationStrategyInterface; use Doctrine\Persistence\ObjectRepository; +use Doctrine\Persistence\Proxy; use PHPCR\ItemNotFoundException; use PHPCR\NodeInterface; use PHPCR\PathNotFoundException; @@ -656,4 +657,9 @@ public function getDocumentId(object $document): ?string { return $this->unitOfWork->getDocumentId($document); } + + public function isUninitializedObject(mixed $value): bool + { + return $value instanceof Proxy && !$value->__isInitialized(); + } } diff --git a/tests/Doctrine/Tests/ODM/PHPCR/Decorator/DocumentManagerDecoratorTest.php b/tests/Doctrine/Tests/ODM/PHPCR/Decorator/DocumentManagerDecoratorTest.php index 5ceafab99..032b41479 100644 --- a/tests/Doctrine/Tests/ODM/PHPCR/Decorator/DocumentManagerDecoratorTest.php +++ b/tests/Doctrine/Tests/ODM/PHPCR/Decorator/DocumentManagerDecoratorTest.php @@ -19,7 +19,9 @@ public function testCheckIfAllPublicMethodsAreDecorated(): void sort($dmMethods); $dmiMethods = get_class_methods(DocumentManagerInterface::class); - $dmiMethods = array_diff($dmiMethods, ['__construct']); + if (!in_array('isUninitializedObject', $dmiMethods)) { + $dmiMethods[] = 'isUninitializedObject'; // this method will only be added i ORM 4.* + } sort($dmiMethods); $dmdMethods = get_class_methods(OwnDocumentManager::class);