Skip to content

Commit 903a564

Browse files
committed
add forward compatible method for doctrine/persistence#334
1 parent d3c282b commit 903a564

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

lib/Doctrine/ODM/PHPCR/Decorator/DocumentManagerDecorator.php

+5
Original file line numberDiff line numberDiff line change
@@ -242,4 +242,9 @@ public function getDocumentId(object $document): string
242242
{
243243
return $this->wrapped->getDocumentId($document);
244244
}
245+
246+
public function isUninitializedObject(mixed $value): bool
247+
{
248+
return $this->wrapped->isUninitializedObject($value);
249+
}
245250
}

lib/Doctrine/ODM/PHPCR/DocumentManager.php

+6
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Doctrine\ODM\PHPCR\Translation\TranslationStrategy\ChildTranslationStrategy;
2020
use Doctrine\ODM\PHPCR\Translation\TranslationStrategy\TranslationStrategyInterface;
2121
use Doctrine\Persistence\ObjectRepository;
22+
use Doctrine\Persistence\Proxy;
2223
use PHPCR\ItemNotFoundException;
2324
use PHPCR\NodeInterface;
2425
use PHPCR\PathNotFoundException;
@@ -656,4 +657,9 @@ public function getDocumentId(object $document): ?string
656657
{
657658
return $this->unitOfWork->getDocumentId($document);
658659
}
660+
661+
public function isUninitializedObject(mixed $value): bool
662+
{
663+
return $value instanceof Proxy && !$value->__isInitialized();
664+
}
659665
}

tests/Doctrine/Tests/ODM/PHPCR/Decorator/DocumentManagerDecoratorTest.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ public function testCheckIfAllPublicMethodsAreDecorated(): void
1919
sort($dmMethods);
2020

2121
$dmiMethods = get_class_methods(DocumentManagerInterface::class);
22-
$dmiMethods = array_diff($dmiMethods, ['__construct']);
22+
if (!in_array('isUninitializedObject', $dmiMethods)) {
23+
$dmiMethods[] = 'isUninitializedObject'; // this method will only be added i ORM 4.*
24+
}
2325
sort($dmiMethods);
2426

2527
$dmdMethods = get_class_methods(OwnDocumentManager::class);

0 commit comments

Comments
 (0)