xref: /plugin/statistics/vendor/matomo/device-detector/Cache/StaticCache.php (revision d5ef99ddb7dfb0cfae33e9257bd1d788f682c50f)
1*d5ef99ddSAndreas Gohr<?php
2*d5ef99ddSAndreas Gohr
3*d5ef99ddSAndreas Gohr/**
4*d5ef99ddSAndreas Gohr * Device Detector - The Universal Device Detection library for parsing User Agents
5*d5ef99ddSAndreas Gohr *
6*d5ef99ddSAndreas Gohr * @link https://matomo.org
7*d5ef99ddSAndreas Gohr *
8*d5ef99ddSAndreas Gohr * @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
9*d5ef99ddSAndreas Gohr */
10*d5ef99ddSAndreas Gohr
11*d5ef99ddSAndreas Gohrdeclare(strict_types=1);
12*d5ef99ddSAndreas Gohr
13*d5ef99ddSAndreas Gohrnamespace DeviceDetector\Cache;
14*d5ef99ddSAndreas Gohr
15*d5ef99ddSAndreas Gohr/**
16*d5ef99ddSAndreas Gohr * Class StaticCache
17*d5ef99ddSAndreas Gohr *
18*d5ef99ddSAndreas Gohr * Simple Cache that caches in a static property
19*d5ef99ddSAndreas Gohr * (Speeds up multiple detections in one request)
20*d5ef99ddSAndreas Gohr */
21*d5ef99ddSAndreas Gohrclass StaticCache implements CacheInterface
22*d5ef99ddSAndreas Gohr{
23*d5ef99ddSAndreas Gohr    /**
24*d5ef99ddSAndreas Gohr     * Holds the static cache data
25*d5ef99ddSAndreas Gohr     * @var array
26*d5ef99ddSAndreas Gohr     */
27*d5ef99ddSAndreas Gohr    protected static $staticCache = [];
28*d5ef99ddSAndreas Gohr
29*d5ef99ddSAndreas Gohr    /**
30*d5ef99ddSAndreas Gohr     * @inheritdoc
31*d5ef99ddSAndreas Gohr     */
32*d5ef99ddSAndreas Gohr    public function fetch(string $id)
33*d5ef99ddSAndreas Gohr    {
34*d5ef99ddSAndreas Gohr        return $this->contains($id) ? self::$staticCache[$id] : false;
35*d5ef99ddSAndreas Gohr    }
36*d5ef99ddSAndreas Gohr
37*d5ef99ddSAndreas Gohr    /**
38*d5ef99ddSAndreas Gohr     * @inheritdoc
39*d5ef99ddSAndreas Gohr     */
40*d5ef99ddSAndreas Gohr    public function contains(string $id): bool
41*d5ef99ddSAndreas Gohr    {
42*d5ef99ddSAndreas Gohr        return isset(self::$staticCache[$id]) || \array_key_exists($id, self::$staticCache);
43*d5ef99ddSAndreas Gohr    }
44*d5ef99ddSAndreas Gohr
45*d5ef99ddSAndreas Gohr    /**
46*d5ef99ddSAndreas Gohr     * @inheritdoc
47*d5ef99ddSAndreas Gohr     */
48*d5ef99ddSAndreas Gohr    public function save(string $id, $data, int $lifeTime = 0): bool
49*d5ef99ddSAndreas Gohr    {
50*d5ef99ddSAndreas Gohr        self::$staticCache[$id] = $data;
51*d5ef99ddSAndreas Gohr
52*d5ef99ddSAndreas Gohr        return true;
53*d5ef99ddSAndreas Gohr    }
54*d5ef99ddSAndreas Gohr
55*d5ef99ddSAndreas Gohr    /**
56*d5ef99ddSAndreas Gohr     * @inheritdoc
57*d5ef99ddSAndreas Gohr     */
58*d5ef99ddSAndreas Gohr    public function delete(string $id): bool
59*d5ef99ddSAndreas Gohr    {
60*d5ef99ddSAndreas Gohr        unset(self::$staticCache[$id]);
61*d5ef99ddSAndreas Gohr
62*d5ef99ddSAndreas Gohr        return true;
63*d5ef99ddSAndreas Gohr    }
64*d5ef99ddSAndreas Gohr
65*d5ef99ddSAndreas Gohr    /**
66*d5ef99ddSAndreas Gohr     * @inheritdoc
67*d5ef99ddSAndreas Gohr     */
68*d5ef99ddSAndreas Gohr    public function flushAll(): bool
69*d5ef99ddSAndreas Gohr    {
70*d5ef99ddSAndreas Gohr        self::$staticCache = [];
71*d5ef99ddSAndreas Gohr
72*d5ef99ddSAndreas Gohr        return true;
73*d5ef99ddSAndreas Gohr    }
74*d5ef99ddSAndreas Gohr}
75