You are here

class DateTimeFormatterStrategy in Zircon Profile 8.0

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

Hierarchy

Expanded class hierarchy of DateTimeFormatterStrategy

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

File

vendor/zendframework/zend-hydrator/src/Strategy/DateTimeFormatterStrategy.php, line 15

Namespace

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

  /**
   * @var string
   */
  private $format;

  /**
   * @var DateTimeZone|null
   */
  private $timezone;

  /**
   * Constructor
   *
   * @param string            $format
   * @param DateTimeZone|null $timezone
   */
  public function __construct($format = DateTime::RFC3339, DateTimeZone $timezone = null) {
    $this->format = (string) $format;
    $this->timezone = $timezone;
  }

  /**
   * {@inheritDoc}
   *
   * Converts to date time string
   *
   * @param mixed|DateTime $value
   *
   * @return mixed|string
   */
  public function extract($value) {
    if ($value instanceof DateTime) {
      return $value
        ->format($this->format);
    }
    return $value;
  }

  /**
   * Converts date time string to DateTime instance for injecting to object
   *
   * {@inheritDoc}
   *
   * @param mixed|string $value
   *
   * @return mixed|DateTime
   */
  public function hydrate($value) {
    if ($value === '' || $value === null) {
      return;
    }
    if ($this->timezone) {
      $hydrated = DateTime::createFromFormat($this->format, $value, $this->timezone);
    }
    else {
      $hydrated = DateTime::createFromFormat($this->format, $value);
    }
    return $hydrated ?: $value;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DateTimeFormatterStrategy::$format private property
DateTimeFormatterStrategy::$timezone private property
DateTimeFormatterStrategy::extract public function Converts to date time string Overrides StrategyInterface::extract
DateTimeFormatterStrategy::hydrate public function Converts date time string to DateTime instance for injecting to object Overrides StrategyInterface::hydrate
DateTimeFormatterStrategy::__construct public function Constructor