vendor/mark-gerarts/auto-mapper-plus/src/MappingOperation/Implementations/MapFrom.php line 43

Open in your IDE?
  1. <?php
  2. namespace AutoMapperPlus\MappingOperation\Implementations;
  3. use AutoMapperPlus\MappingOperation\ContextAwareOperation;
  4. use AutoMapperPlus\MappingOperation\ContextAwareTrait;
  5. use AutoMapperPlus\MappingOperation\DefaultMappingOperation;
  6. use AutoMapperPlus\MappingOperation\MapperAwareOperation;
  7. use AutoMapperPlus\MappingOperation\MapperAwareTrait;
  8. /**
  9.  * Class MapFrom
  10.  *
  11.  * @package AutoMapperPlus\MappingOperation\Implementations
  12.  */
  13. class MapFrom extends DefaultMappingOperation implements
  14.     MapperAwareOperation,
  15.     ContextAwareOperation
  16. {
  17.     use MapperAwareTrait;
  18.     use ContextAwareTrait;
  19.     /**
  20.      * @var callable
  21.      */
  22.     protected $valueCallback;
  23.     /**
  24.      * MapFrom constructor.
  25.      *
  26.      * @param callable $valueCallback
  27.      */
  28.     public function __construct(callable $valueCallback)
  29.     {
  30.         $this->valueCallback $valueCallback;
  31.     }
  32.     /**
  33.      * @inheritdoc
  34.      */
  35.     protected function getSourceValue($sourcestring $propertyName)
  36.     {
  37.         return ($this->valueCallback)($source$this->mapper$this->context);
  38.     }
  39.     /**
  40.      * @inheritdoc
  41.      */
  42.     protected function canMapProperty(string $propertyName$source): bool
  43.     {
  44.         // Mapping with a callback is always possible, regardless of the source
  45.         // properties.
  46.         return true;
  47.     }
  48.     /**
  49.      * @inheritdoc
  50.      */
  51.     protected function setDestinationValue(
  52.         $destination,
  53.         string $propertyName,
  54.         $value
  55.     ): void {
  56.         $this->propertyWriter->setProperty(
  57.             $destination,
  58.             $propertyName,
  59.             $value
  60.         );
  61.     }
  62. }