for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Doctrine\ORM\Mapping;
use Doctrine\ORM\Utility\StaticClassNameConverter;
class MetadataCollection
{
/**
* @var ClassMetadata[]
*/
private $metadata;
private function __construct(array $metadata)
$metadataByClassName = array_combine(
array_map(function (ClassMetadata $metadata) { return $metadata->getClassName(); }, $metadata),
$metadata
);
$this->metadata = $metadataByClassName;
This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.
To visualize
$a = "a"; $ab = "ab"; $abc = "abc";
will produce issues in the first and second line, while this second example
will produce no issues.
}
public function get(string $name) : ClassMetadata
$name = StaticClassNameConverter::getRealClass($name);
if(!isset($this->metadata[$name])){
throw new \Exception('No metadata found for ' . $name);
return $this->metadata[$name];
public function has(string $name) : bool
return isset($this->metadata[$name]);
public static function fromClassMetadatas(ClassMetadata $firstClass, ClassMetadata ...$otherClasses)
$otherClasses[] = $firstClass;
return new self($otherClasses);