Example #1
0
 /**
  * Default execution path for factory mappers
  * @param mixed $input
  * @param string $typeName
  * @return mixed|null
  */
 function execute($input, $typeName = null)
 {
     $mapping = $this->getMapping();
     if (is_null($typeName)) {
         $callback = $mapping->getNamingCallback();
         $typeName = $callback($input);
     }
     $inputMapping = null;
     if ($mapping->exists($typeName)) {
         $inputMapping = $mapping[$typeName];
     }
     if (is_string($inputMapping) && $this->hasFactory()) {
         $factory = $this->getFactory();
         $object = $factory->build($inputMapping);
         if (method_exists($this, 'map')) {
             $object = $this->map($input, $object);
         } else {
             $mappingFn = kfiltr\Mapper\Registry::getDefaultMapper();
             $object = $mappingFn($input, $object);
         }
         return $object;
     }
     return null;
 }