for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace JMS\Serializer\Construction;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\Persistence\ObjectManagerAware;
use JMS\Serializer\DeserializationContext;
use JMS\Serializer\Metadata\ClassMetadata;
use JMS\Serializer\Visitor\DeserializationVisitorInterface;
/**
* Object Manager Aware Constructor.
* Injects Object manager on Construction in case ObjectManagerAware Interface is implemented
*/
class ObjectManagerAwareConstructor implements ObjectConstructorInterface
{
* @var ObjectManager
private $objectManager;
* @var ObjectConstructorInterface
private $objectConstructor;
public function __construct(
ObjectConstructorInterface $objectConstructor,
ObjectManager $objectManager
) {
$this->objectManager = $objectManager;
$this->objectConstructor = $objectConstructor;
}
* {@inheritdoc}
public function construct(
DeserializationVisitorInterface $visitor,
ClassMetadata $metadata,
$data,
array $type,
DeserializationContext $context
): ?object {
$object = $this->objectConstructor->construct(
$visitor,
$metadata,
$type,
$context
);
if ($object instanceof ObjectManagerAware) {
$metadata = $this->objectManager->getClassMetadata(get_class($object));
$object->injectObjectManager($this->objectManager, $metadata);
return $object;