<?php namespace MailPoetVendor\Doctrine\Common\Cache\Psr6; if (!defined('ABSPATH')) exit; use DateInterval; use DateTime; use DateTimeInterface; use MailPoetVendor\Psr\Cache\CacheItemInterface; use TypeError; use function get_class; use function gettype; use function is_int; use function is_object; use function microtime; use function sprintf; final class CacheItem implements CacheItemInterface { private $key; private $value; private $isHit; private $expiry; public function __construct(string $key, $data, bool $isHit) { $this->key = $key; $this->value = $data; $this->isHit = $isHit; } public function getKey() : string { return $this->key; } public function get() { return $this->value; } public function isHit() : bool { return $this->isHit; } public function set($value) : self { $this->value = $value; return $this; } public function expiresAt($expiration) : self { if ($expiration === null) { $this->expiry = null; } elseif ($expiration instanceof DateTimeInterface) { $this->expiry = (float) $expiration->format('U.u'); } else { throw new TypeError(sprintf('Expected $expiration to be an instance of DateTimeInterface or null, got %s', is_object($expiration) ? get_class($expiration) : gettype($expiration))); } return $this; } public function expiresAfter($time) : self { if ($time === null) { $this->expiry = null; } elseif ($time instanceof DateInterval) { $this->expiry = microtime(\true) + DateTime::createFromFormat('U', 0)->add($time)->format('U.u'); } elseif (is_int($time)) { $this->expiry = $time + microtime(\true); } else { throw new TypeError(sprintf('Expected $time to be either an integer, an instance of DateInterval or null, got %s', is_object($time) ? get_class($time) : gettype($time))); } return $this; } public function getExpiry() : ?float { return $this->expiry; } }