Пример #1
0
 /**
  * Transform one object
  *
  * @param $object
  * @param MapInterface $map
  * @param string $context
  * @return array
  */
 public function transform($object, MapInterface $map, $context)
 {
     // Iterate by map
     $fields = [];
     foreach ($map->getMap() as $path => $callback) {
         if (is_string($callback)) {
             $fields[$path] = $object->{$callback}();
         } elseif (isset($callback['converter']) && is_string($callback['converter'])) {
             /** @var ConverterInterface $converter */
             $converter = $this->container->get($callback['converter']);
             if (isset($callback['collection']) && $callback['collection']) {
                 $fields[$path] = $converter->reverseConvertCollection($object->{$callback}['method']());
             } else {
                 $fields[$path] = $converter->reverseConvert($object->{$callback}['method']());
             }
         } elseif (isset($callback['converter']) && $callback['converter'] instanceof ConverterInterface) {
             /** @var ConverterInterface $converter */
             $converter = $callback['converter'];
             if (isset($callback['collection']) && $callback['collection']) {
                 $fields[$path] = $converter->reverseConvertCollection($object->{$callback}['method']());
             } else {
                 $fields[$path] = $converter->reverseConvert($object->{$callback}['method']());
             }
         }
     }
     $fields += $this->permissionManager->getPermissions($object, $context);
     return $fields;
 }
Пример #2
0
 /**
  * Populating object from data model
  * @param array|ParameterBag $model
  * @param $object
  * @param MapInterface $map
  */
 public function bindContent($model, $object, MapInterface $map)
 {
     foreach ($map->getReverseMap() as $method => $value) {
         if (is_string($value)) {
             // if $value is string then working without converter
             if (array_key_exists($value, $model)) {
                 $object->{$method}($model[$value]);
             }
         } elseif (isset($value['converter']) && is_string($value['converter'])) {
             // if converter is service then using as service
             /** @var ConverterInterface $converter */
             $converter = $this->container->get($value['converter']);
             $child = $converter->convert($model[$value['path']]);
             $child && $object->{$method}($child);
         } elseif (isset($value['converter']) && $value['converter'] instanceof ConverterInterface) {
             // else trying use object as converter
             $converter = $value['converter'];
             $child = $converter->convert($model[$value['path']]);
             $child && $object->{$method}($child);
         }
     }
 }