Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 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'));
 }