Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Doctrine\Common\Cache\Psr6;
4
 
5
use DateInterval;
6
use DateTime;
7
use DateTimeInterface;
8
use Psr\Cache\CacheItemInterface;
9
use TypeError;
10
 
11
use function get_class;
12
use function gettype;
13
use function is_int;
14
use function is_object;
15
use function microtime;
16
use function sprintf;
17
 
18
final class CacheItem implements CacheItemInterface
19
{
20
    /** @var string */
21
    private $key;
22
    /** @var mixed */
23
    private $value;
24
    /** @var bool */
25
    private $isHit;
26
    /** @var float|null */
27
    private $expiry;
28
 
29
    /**
30
     * @internal
31
     *
32
     * @param mixed $data
33
     */
34
    public function __construct(string $key, $data, bool $isHit)
35
    {
36
        $this->key   = $key;
37
        $this->value = $data;
38
        $this->isHit = $isHit;
39
    }
40
 
41
    public function getKey(): string
42
    {
43
        return $this->key;
44
    }
45
 
46
    /**
47
     * {@inheritDoc}
48
     *
49
     * @return mixed
50
     */
51
    public function get()
52
    {
53
        return $this->value;
54
    }
55
 
56
    public function isHit(): bool
57
    {
58
        return $this->isHit;
59
    }
60
 
61
    /**
62
     * {@inheritDoc}
63
     */
64
    public function set($value): self
65
    {
66
        $this->value = $value;
67
 
68
        return $this;
69
    }
70
 
71
    /**
72
     * {@inheritDoc}
73
     */
74
    public function expiresAt($expiration): self
75
    {
76
        if ($expiration === null) {
77
            $this->expiry = null;
78
        } elseif ($expiration instanceof DateTimeInterface) {
79
            $this->expiry = (float) $expiration->format('U.u');
80
        } else {
81
            throw new TypeError(sprintf(
82
                'Expected $expiration to be an instance of DateTimeInterface or null, got %s',
83
                is_object($expiration) ? get_class($expiration) : gettype($expiration)
84
            ));
85
        }
86
 
87
        return $this;
88
    }
89
 
90
    /**
91
     * {@inheritDoc}
92
     */
93
    public function expiresAfter($time): self
94
    {
95
        if ($time === null) {
96
            $this->expiry = null;
97
        } elseif ($time instanceof DateInterval) {
98
            $this->expiry = microtime(true) + DateTime::createFromFormat('U', 0)->add($time)->format('U.u');
99
        } elseif (is_int($time)) {
100
            $this->expiry = $time + microtime(true);
101
        } else {
102
            throw new TypeError(sprintf(
103
                'Expected $time to be either an integer, an instance of DateInterval or null, got %s',
104
                is_object($time) ? get_class($time) : gettype($time)
105
            ));
106
        }
107
 
108
        return $this;
109
    }
110
 
111
    /**
112
     * @internal
113
     */
114
    public function getExpiry(): ?float
115
    {
116
        return $this->expiry;
117
    }
118
}