예제 #1
0
 /**
  * {@inheritdoc}
  */
 public function fill(Builder $builder)
 {
     if (Util::isUserClass($builder->getClass())) {
         $refl = new \ReflectionClass($builder->getClass());
         $filter = \ReflectionProperty::IS_PRIVATE | \ReflectionProperty::IS_PUBLIC | \ReflectionProperty::IS_PROTECTED;
         foreach ($refl->getProperties($filter) as $property) {
             if ($this->isPropertyAccessible($property->getName(), $refl)) {
                 $this->makeField($property, $builder);
             }
         }
     }
 }
예제 #2
0
 public function fill(Builder $builder)
 {
     $manager = null;
     if (Util::isUserClass($builder->getClass())) {
         $manager = $this->registry->getManagerForClass($builder->getClass());
         if (null !== $manager) {
             try {
                 $metadata = $manager->getClassMetadata($builder->getClass());
                 if ($metadata instanceof ClassMetadata) {
                     $this->process($metadata, $builder);
                 }
             } catch (MappingException $e) {
             }
         }
     }
 }
예제 #3
0
 /**
  * {@inheritdoc}
  */
 public function fill(Builder $builder)
 {
     $class = $builder->getClass();
     if (Util::isUserClass($class) && class_exists($class, true)) {
         $refl = new \ReflectionClass($class);
         /** @var Annotations\Dogma $annot */
         $annot = $this->reader->getClassAnnotation($refl, 'Bravesheep\\Dogmatist\\Guesser\\Annotations\\Dogma');
         if (null !== $annot) {
             $builder->setStrict($annot->strict);
         }
         $this->processConstructor($refl, $builder);
         $this->processFields($refl, $builder);
     }
 }
예제 #4
0
 /**
  * @param \ReflectionClass $refl
  * @param Builder          $builder
  * @return object
  * @throws SampleException
  */
 private function constructObject(\ReflectionClass $refl, Builder $builder)
 {
     $constructor = $refl->getConstructor();
     $obj = null;
     if (null === $constructor || $constructor->getNumberOfParameters() === 0) {
         $obj = $refl->newInstance();
     } elseif ($constructor) {
         if (!$builder->hasConstructor() && $constructor->getNumberOfRequiredParameters() === 0) {
             $obj = $refl->newInstance();
         } elseif ($builder->hasConstructor()) {
             $args = $this->alignArgs($constructor, $this->sample($builder->constructor()), $builder->constructor());
             $obj = $refl->newInstanceArgs($args);
         }
     }
     if (null === $obj && !$builder->isStrict()) {
         $obj = $refl->newInstanceWithoutConstructor();
     } elseif (null === $obj) {
         throw new SampleException("Constructor required for constructing {$builder->getClass()} in strict mode");
     }
     return $obj;
 }