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