You are here

class MapNamingStrategy in Zircon Profile 8

Same name in this branch
  1. 8 vendor/zendframework/zend-hydrator/src/NamingStrategy/MapNamingStrategy.php \Zend\Hydrator\NamingStrategy\MapNamingStrategy
  2. 8 vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/MapNamingStrategy.php \Zend\Stdlib\Hydrator\NamingStrategy\MapNamingStrategy
Same name and namespace in other branches
  1. 8.0 vendor/zendframework/zend-hydrator/src/NamingStrategy/MapNamingStrategy.php \Zend\Hydrator\NamingStrategy\MapNamingStrategy

Hierarchy

Expanded class hierarchy of MapNamingStrategy

1 file declares its use of MapNamingStrategy
MapNamingStrategy.php in vendor/zendframework/zend-stdlib/src/Hydrator/NamingStrategy/MapNamingStrategy.php

File

vendor/zendframework/zend-hydrator/src/NamingStrategy/MapNamingStrategy.php, line 14

Namespace

Zend\Hydrator\NamingStrategy
View source
class MapNamingStrategy implements NamingStrategyInterface {

  /**
   * Map for hydrate name conversion.
   *
   * @var array
   */
  protected $mapping = [];

  /**
   * Reversed map for extract name conversion.
   *
   * @var array
   */
  protected $reverse = [];

  /**
   * Initialize.
   *
   * @param array $mapping Map for name conversion on hydration
   * @param array $reverse Reverse map for name conversion on extraction
   */
  public function __construct(array $mapping, array $reverse = null) {
    $this->mapping = $mapping;
    $this->reverse = $reverse ?: $this
      ->flipMapping($mapping);
  }

  /**
   * Safelly flip mapping array.
   *
   * @param  array                    $array Array to flip
   * @return array                    Flipped array
   * @throws InvalidArgumentException
   */
  protected function flipMapping(array $array) {
    array_walk($array, function ($value) {
      if (!is_string($value) && !is_int($value)) {
        throw new InvalidArgumentException('Mapping array can\'t be flipped because of invalid value');
      }
    });
    return array_flip($array);
  }

  /**
   * Converts the given name so that it can be extracted by the hydrator.
   *
   * @param  string $name The original name
   * @return mixed  The hydrated name
   */
  public function hydrate($name) {
    if (array_key_exists($name, $this->mapping)) {
      return $this->mapping[$name];
    }
    return $name;
  }

  /**
   * Converts the given name so that it can be hydrated by the hydrator.
   *
   * @param  string $name The original name
   * @return mixed  The extracted name
   */
  public function extract($name) {
    if (array_key_exists($name, $this->reverse)) {
      return $this->reverse[$name];
    }
    return $name;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
MapNamingStrategy::$mapping protected property Map for hydrate name conversion.
MapNamingStrategy::$reverse protected property Reversed map for extract name conversion.
MapNamingStrategy::extract public function Converts the given name so that it can be hydrated by the hydrator. Overrides NamingStrategyInterface::extract
MapNamingStrategy::flipMapping protected function Safelly flip mapping array.
MapNamingStrategy::hydrate public function Converts the given name so that it can be extracted by the hydrator. Overrides NamingStrategyInterface::hydrate
MapNamingStrategy::__construct public function Initialize.