Submit
Path:
~
/
/
opt
/
psa
/
phpMyAdmin
/
vendor
/
twig
/
twig
/
src
/
Cache
/
File Content:
ChainCache.php
<?php /* * This file is part of Twig. * * (c) Fabien Potencier * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Twig\Cache; /** * Chains several caches together. * * Cached items are fetched from the first cache having them in its data store. * They are saved and deleted in all adapters at once. * * @author Quentin Devos <quentin@devos.pm> */ final class ChainCache implements CacheInterface { private $caches; /** * @param iterable<CacheInterface> $caches The ordered list of caches used to store and fetch cached items */ public function __construct(iterable $caches) { $this->caches = $caches; } public function generateKey(string $name, string $className): string { return $className.'#'.$name; } public function write(string $key, string $content): void { $splitKey = $this->splitKey($key); foreach ($this->caches as $cache) { $cache->write($cache->generateKey(...$splitKey), $content); } } public function load(string $key): void { [$name, $className] = $this->splitKey($key); foreach ($this->caches as $cache) { $cache->load($cache->generateKey($name, $className)); if (class_exists($className, false)) { break; } } } public function getTimestamp(string $key): int { $splitKey = $this->splitKey($key); foreach ($this->caches as $cache) { if (0 < $timestamp = $cache->getTimestamp($cache->generateKey(...$splitKey))) { return $timestamp; } } return 0; } /** * @return string[] */ private function splitKey(string $key): array { return array_reverse(explode('#', $key, 2)); } }
Edit
Rename
Chmod
Delete
FILE
FOLDER
INFO
Name
Size
Permission
Action
CacheInterface.php
1165 bytes
0644
ChainCache.php
1916 bytes
0644
FilesystemCache.php
2536 bytes
0644
NullCache.php
690 bytes
0644
ReadOnlyFilesystemCache.php
560 bytes
0644
N4ST4R_ID | Naxtarrr