Esempio n. 1
0
 /**
  * @param string     $field
  * @param integer    $type
  * @param bool|array $multiple
  * @param array      $options
  * @param Builder    $builder
  */
 private function addFieldOfType($field, $type, $multiple, array $options, Builder $builder)
 {
     switch ($type) {
         case Field::TYPE_FAKE:
             $builder->fake($field, $options[0], isset($options[1]) ? $options[1] : []);
             break;
         case Field::TYPE_LINK:
             $builder->link($field, $options[0]);
             break;
         case Field::TYPE_RELATION:
             $builder->relation($field, $options[0]);
             break;
         case Field::TYPE_VALUE:
             $builder->value($field, $options[0]);
             break;
         case Field::TYPE_CALLBACK:
             $builder->callback($field, $options[0]);
             break;
         case Field::TYPE_NONE:
             $builder->none($field);
             break;
         case Field::TYPE_SELECT:
             $builder->select($field, $options[0]);
             break;
     }
     if (false === $multiple) {
         $builder->single($field);
     } else {
         $builder->multiple($field, $multiple[0], $multiple[1]);
     }
 }
Esempio n. 2
0
 private function makeField(array $mapping, Builder $builder)
 {
     $field = $mapping['fieldName'];
     switch ($mapping['type']) {
         case 'string':
             $length = isset($mapping['length']) && is_int($mapping['length']) ? $mapping['length'] : 255;
             $builder->fake($field, 'text', [$length]);
             break;
         case 'integer':
         case 'bigint':
             $builder->fake($field, 'randomNumber');
             break;
         case 'smallint':
             $builder->fake($field, 'numberBetween', [0, 65535]);
             break;
         case 'boolean':
             $builder->fake($field, 'boolean');
             break;
         case 'decimal':
             $precision = isset($mapping['precision']) ? $mapping['precision'] : 2;
             $builder->callback($field, function ($data, Dogmatist $dogmatist) use($precision) {
                 return $dogmatist->getFaker()->randomNumber($precision + 2) / 100;
             });
             break;
         case 'date':
         case 'time':
         case 'datetime':
             $builder->fake($field, 'datetime');
             break;
         case 'datetimetz':
             $builder->callback($field, function ($data, Dogmatist $dogmatist) {
                 $date = $dogmatist->getFaker()->dateTime;
                 $tz = $dogmatist->getFaker()->timezone;
                 return $date->setTimezone(new \DateTimeZone($tz));
             });
             break;
         case 'text':
             $builder->fake($field, 'text');
             break;
         case 'float':
             $builder->fake($field, 'randomFloat');
             break;
         case 'guid':
             $builder->fake($field, 'uuid');
             break;
     }
 }
 /**
  * @param string|int $field
  *
  */
 protected function checkState($field)
 {
     if (is_int($field)) {
         $this->preparePositional();
     }
     if (count($this->getFields()) > 0) {
         if (is_string($field) && $this->isPositional()) {
             throw new BuilderException("Cannot add named argument to positional arguments");
         } else {
             parent::checkState($field);
         }
     }
 }
Esempio n. 4
0
 /**
  * @param Annotations\Constructor $constr
  * @param Builder                 $builder
  */
 private function addConstructor(Annotations\Constructor $constr, Builder $builder)
 {
     $cb = $builder->constructor();
     foreach ($constr->args as $name => $arg) {
         $this->addField($name, $arg->type, $arg->count, $cb);
     }
 }
Esempio n. 5
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;
 }