* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Config; use Symfony\Component\Config\Resource\ResourceInterface; use Symfony\Component\Config\Resource\SelfCheckingResourceChecker; use Symfony\Component\Config\Resource\SkippingResourceChecker; /** * ConfigCache caches arbitrary content in files on disk. * * When in debug mode, those metadata resources that implement * \Symfony\Component\Config\Resource\SelfCheckingResourceInterface will * be used to check cache freshness. * * @author Fabien Potencier * @author Matthias Pigulla */ class ConfigCache extends ResourceCheckerConfigCache { /** * @param string $file The absolute cache path * @param bool $debug Whether debugging is enabled or not * @param string|null $metaFile The absolute path to the meta file * @param class-string[]|null $skippedResourceTypes */ public function __construct( string $file, private bool $debug, ?string $metaFile = null, ?array $skippedResourceTypes = null, ) { $checkers = []; if ($this->debug) { if (null !== $skippedResourceTypes) { $checkers[] = new SkippingResourceChecker($skippedResourceTypes); } $checkers[] = new SelfCheckingResourceChecker(); } parent::__construct($file, $checkers, $metaFile); } /** * Checks if the cache is still fresh. * * This implementation always returns true when debug is off and the * cache file exists. */ public function isFresh(): bool { if (!$this->debug && is_file($this->getPath())) { return true; } return parent::isFresh(); } }