for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Doctrine\SkeletonMapper\DataRepository;
use Doctrine\SkeletonMapper\ObjectManagerInterface;
use function array_combine;
use function assert;
use function is_array;
abstract class BasicObjectDataRepository extends ObjectDataRepository
{
/** @var ObjectManagerInterface */
protected $objectManager;
/** @var string */
protected $className;
public function __construct(ObjectManagerInterface $objectManager, string $className)
$this->objectManager = $objectManager;
$this->className = $className;
}
public function getClassName() : string
return $this->className;
public function setClassName(string $className) : void
/**
* @param mixed $id
*
* @return mixed[]
*/
public function find($id) : ?array
$identifier = $this->getIdentifier();
$identifierValues = is_array($id) ? $id : [$id];
$criteria = array_combine($identifier, $identifierValues);
assert($criteria !== false);
return $this->findOneBy($criteria);
protected function getIdentifier() : array
return $this->objectManager
->getClassMetadata($this->getClassName())
->getIdentifier();
* @param object $object
protected function getObjectIdentifier($object) : array
->getRepository($this->getClassName())
->getObjectIdentifier($object);