Submit
Path:
~
/
/
opt
/
psa
/
phpMyAdmin
/
vendor
/
twig
/
twig
/
src
/
Cache
/
File Content:
FilesystemCache.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; /** * Implements a cache on the filesystem. * * @author Andrew Tch <andrew@noop.lv> */ class FilesystemCache implements CacheInterface { public const FORCE_BYTECODE_INVALIDATION = 1; private $directory; private $options; public function __construct(string $directory, int $options = 0) { $this->directory = rtrim($directory, '\/').'/'; $this->options = $options; } public function generateKey(string $name, string $className): string { $hash = hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $className); return $this->directory.$hash[0].$hash[1].'/'.$hash.'.php'; } public function load(string $key): void { if (is_file($key)) { @include_once $key; } } public function write(string $key, string $content): void { $dir = \dirname($key); if (!is_dir($dir)) { if (false === @mkdir($dir, 0777, true)) { clearstatcache(true, $dir); if (!is_dir($dir)) { throw new \RuntimeException(\sprintf('Unable to create the cache directory (%s).', $dir)); } } } elseif (!is_writable($dir)) { throw new \RuntimeException(\sprintf('Unable to write in the cache directory (%s).', $dir)); } $tmpFile = tempnam($dir, basename($key)); if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $key)) { @chmod($key, 0666 & ~umask()); if (self::FORCE_BYTECODE_INVALIDATION == ($this->options & self::FORCE_BYTECODE_INVALIDATION)) { // Compile cached file into bytecode cache if (\function_exists('opcache_invalidate') && filter_var(\ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN)) { @opcache_invalidate($key, true); } elseif (\function_exists('apc_compile_file')) { apc_compile_file($key); } } return; } throw new \RuntimeException(\sprintf('Failed to write cache file "%s".', $key)); } public function getTimestamp(string $key): int { if (!is_file($key)) { return 0; } return (int) @filemtime($key); } }
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