You are here

class BooleanStrategy in Zircon Profile 8.0

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

This Strategy extracts and hydrates int and string values to Boolean values

Hierarchy

Expanded class hierarchy of BooleanStrategy

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

File

vendor/zendframework/zend-hydrator/src/Strategy/BooleanStrategy.php, line 17

Namespace

Zend\Hydrator\Strategy
View source
class BooleanStrategy implements StrategyInterface {

  /**
   * @var int|string
   */
  private $trueValue;

  /**
   * @var int|string
   */
  private $falseValue;

  /**
   * @param int|string $trueValue
   * @param int|string $falseValue
   * @throws InvalidArgumentException
   */
  public function __construct($trueValue, $falseValue) {
    if (!is_int($trueValue) && !is_string($trueValue)) {
      throw new InvalidArgumentException(sprintf('Unable to instantiate BooleanStrategy. Expected int or string as $trueValue. %s was given', is_object($trueValue) ? get_class($trueValue) : gettype($trueValue)));
    }
    if (!is_int($falseValue) && !is_string($falseValue)) {
      throw new InvalidArgumentException(sprintf('Unable to instantiate BooleanStrategy. Expected int or string as $falseValue. %s was given', is_object($falseValue) ? get_class($falseValue) : gettype($falseValue)));
    }
    $this->trueValue = $trueValue;
    $this->falseValue = $falseValue;
  }

  /**
   * Converts the given value so that it can be extracted by the hydrator.
   *
   * @param  bool $value The original value.
   * @throws InvalidArgumentException
   * @return int|string Returns the value that should be extracted.
   */
  public function extract($value) {
    if (!is_bool($value)) {
      throw new InvalidArgumentException(sprintf('Unable to extract. Expected bool. %s was given.', is_object($value) ? get_class($value) : gettype($value)));
    }
    return $value === true ? $this->trueValue : $this->falseValue;
  }

  /**
   * Converts the given value so that it can be hydrated by the hydrator.
   *
   * @param  int|string $value The original value.
   * @throws InvalidArgumentException
   * @return bool Returns the value that should be hydrated.
   */
  public function hydrate($value) {
    if (!is_string($value) && !is_int($value)) {
      throw new InvalidArgumentException(sprintf('Unable to hydrate. Expected string or int. %s was given.', is_object($value) ? get_class($value) : gettype($value)));
    }
    if ($value === $this->trueValue) {
      return true;
    }
    if ($value === $this->falseValue) {
      return false;
    }
    throw new InvalidArgumentException(sprintf('Unexpected value %s can\'t be hydrated. Expect %s or %s as Value.', $value, $this->trueValue, $this->falseValue));
  }

}

Members

Namesort descending Modifiers Type Description Overrides
BooleanStrategy::$falseValue private property
BooleanStrategy::$trueValue private property
BooleanStrategy::extract public function Converts the given value so that it can be extracted by the hydrator. Overrides StrategyInterface::extract
BooleanStrategy::hydrate public function Converts the given value so that it can be hydrated by the hydrator. Overrides StrategyInterface::hydrate
BooleanStrategy::__construct public function