| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- namespace Doctrine\Common\Cache\Psr6;
- use DateInterval;
- use DateTime;
- use DateTimeInterface;
- use 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
- {
- /** @var string */
- private $key;
- /** @var mixed */
- private $value;
- /** @var bool */
- private $isHit;
- /** @var float|null */
- private $expiry;
- /**
- * @internal
- *
- * @param mixed $data
- */
- public function __construct(string $key, $data, bool $isHit)
- {
- $this->key = $key;
- $this->value = $data;
- $this->isHit = $isHit;
- }
- public function getKey(): string
- {
- return $this->key;
- }
- /**
- * {@inheritDoc}
- *
- * @return mixed
- */
- public function get()
- {
- return $this->value;
- }
- public function isHit(): bool
- {
- return $this->isHit;
- }
- /**
- * {@inheritDoc}
- */
- public function set($value): self
- {
- $this->value = $value;
- return $this;
- }
- /**
- * {@inheritDoc}
- */
- 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;
- }
- /**
- * {@inheritDoc}
- */
- 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;
- }
- /**
- * @internal
- */
- public function getExpiry(): ?float
- {
- return $this->expiry;
- }
- }
|