public function loadClassMetadata(ClassMetadata $metadata) { /** @var \ReflectionClass $refClass */ $refClass = $metadata->getReflectionClass(); $baseClass = $this->classNameProvider->getBaseClass($refClass->name); if (!$baseClass) { return false; } if (!array_key_exists($baseClass, $this->config->models)) { return false; } foreach ($this->config->models[$baseClass]->properties as $propName => $property) { if ($property->validation) { if (!is_array($property->validation)) { throw new \LogicException("Configuration error: {$baseClass}:{$propName}:validation must be array"); } foreach ($property->validation as $index => $rule) { if (!is_array($rule) or count($rule) != 1) { throw new \LogicException("Configuration error: {$baseClass}:{$propName}:validation: rule #{$index} must be array of 1 element which contains array"); } $constraintClass = array_keys($rule)[0]; $constraintOptions = $rule[$constraintClass]; $fullClass = $this->getFullConstraintClass($constraintClass); $metadata->addGetterConstraint($propName, new $fullClass($constraintOptions)); } } } return true; }
protected function generateGraceClassPhpdoc() { $phpdoc = array(); foreach ($this->modelsConfig->models as $name => $config) { $this->lastProcessedElement = $name; // example: // * @property \Grace\Bundle\Finder\TaxiPassengerFinder $taxiPassengerFinder $propName = lcfirst($name); $phpdoc[] = "@property " . $this->classNameProvider->getFinderClass($name) . " \${$propName}Finder"; } return $phpdoc; }
public function testCommonNamespace() { $provider = new ClassNameProvider('Grace\\Tests\\ORM\\Plug'); $this->assertEquals('TaxiPassenger', $provider->getBaseClass('TaxiPassenger')); $this->assertEquals('TaxiPassenger', $provider->getBaseClass('\\Grace\\Tests\\ORM\\Plug\\Model\\TaxiPassenger')); $this->assertEquals('TaxiPassenger', $provider->getBaseClass('Grace\\Tests\\ORM\\Plug\\Model\\TaxiPassenger')); $this->assertEquals('TaxiPassenger', $provider->getBaseClass('\\Grace\\Tests\\ORM\\Plug\\Finder\\TaxiPassengerFinder')); $this->assertEquals('TaxiPassenger', $provider->getBaseClass('Grace\\Tests\\ORM\\Plug\\Finder\\TaxiPassengerFinder')); $this->assertEquals('\\Grace\\Tests\\ORM\\Plug\\Model\\TaxiPassenger', $provider->getModelClass('TaxiPassenger')); $this->assertEquals('\\Grace\\Tests\\ORM\\Plug\\Model\\TaxiPassenger', $provider->getModelClass('\\Grace\\Tests\\ORM\\Plug\\Model\\TaxiPassenger')); $this->assertEquals('\\Grace\\Tests\\ORM\\Plug\\Model\\TaxiPassenger', $provider->getModelClass('Grace\\Tests\\ORM\\Plug\\Model\\TaxiPassenger')); $this->assertEquals('\\Grace\\Tests\\ORM\\Plug\\Model\\TaxiPassenger', $provider->getModelClass('\\Grace\\Tests\\ORM\\Plug\\Finder\\TaxiPassengerFinder')); $this->assertEquals('\\Grace\\Tests\\ORM\\Plug\\Model\\TaxiPassenger', $provider->getModelClass('Grace\\Tests\\ORM\\Plug\\Finder\\TaxiPassengerFinder')); $this->assertEquals('\\Grace\\Tests\\ORM\\Plug\\Finder\\TaxiPassengerFinder', $provider->getFinderClass('TaxiPassenger')); $this->assertEquals('\\Grace\\Tests\\ORM\\Plug\\Finder\\TaxiPassengerFinder', $provider->getFinderClass('\\Grace\\Tests\\ORM\\Plug\\Model\\TaxiPassenger')); $this->assertEquals('\\Grace\\Tests\\ORM\\Plug\\Finder\\TaxiPassengerFinder', $provider->getFinderClass('Grace\\Tests\\ORM\\Plug\\Model\\TaxiPassenger')); $this->assertEquals('\\Grace\\Tests\\ORM\\Plug\\Finder\\TaxiPassengerFinder', $provider->getFinderClass('\\Grace\\Tests\\ORM\\Plug\\Finder\\TaxiPassengerFinder')); $this->assertEquals('\\Grace\\Tests\\ORM\\Plug\\Finder\\TaxiPassengerFinder', $provider->getFinderClass('Grace\\Tests\\ORM\\Plug\\Finder\\TaxiPassengerFinder')); }