/** * Writes an asset collection to a cache file, optionally applies filters. * * @param AssetCollection $assets * @param string $file * @param array $filters * @return string|false */ protected function doCache(AssetCollection $assets, $file, $filters = []) { $filters = $this->filters->get($filters); if (count($assets)) { $salt = array_merge([$_SERVER['SCRIPT_NAME']], array_keys($filters)); $file = preg_replace('/(.*?)(\\.[^\\.]+)?$/i', '$1-' . $assets->hash(implode(',', $salt)) . '$2', $file, 1); if (!file_exists($file)) { file_put_contents($file, $assets->dump($filters)); } return $file; } return false; }