Chris@0: Chris@0: * Chris@0: * For the full copyright and license information, please view the LICENSE Chris@0: * file that was distributed with this source code. Chris@0: */ Chris@0: Chris@0: namespace Symfony\Component\HttpKernel\CacheWarmer; Chris@0: Chris@0: /** Chris@0: * Aggregates several cache warmers into a single one. Chris@0: * Chris@0: * @author Fabien Potencier Chris@14: * Chris@14: * @final since version 3.4 Chris@0: */ Chris@0: class CacheWarmerAggregate implements CacheWarmerInterface Chris@0: { Chris@17: protected $warmers = []; Chris@0: protected $optionalsEnabled = false; Chris@14: private $triggerDeprecation = false; Chris@0: Chris@17: public function __construct($warmers = []) Chris@0: { Chris@0: foreach ($warmers as $warmer) { Chris@0: $this->add($warmer); Chris@0: } Chris@14: $this->triggerDeprecation = true; Chris@0: } Chris@0: Chris@0: public function enableOptionalWarmers() Chris@0: { Chris@0: $this->optionalsEnabled = true; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Warms up the cache. Chris@0: * Chris@0: * @param string $cacheDir The cache directory Chris@0: */ Chris@0: public function warmUp($cacheDir) Chris@0: { Chris@0: foreach ($this->warmers as $warmer) { Chris@0: if (!$this->optionalsEnabled && $warmer->isOptional()) { Chris@0: continue; Chris@0: } Chris@0: Chris@0: $warmer->warmUp($cacheDir); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * Checks whether this warmer is optional or not. Chris@0: * Chris@0: * @return bool always false Chris@0: */ Chris@0: public function isOptional() Chris@0: { Chris@0: return false; Chris@0: } Chris@0: Chris@14: /** Chris@14: * @deprecated since version 3.4, to be removed in 4.0, inject the list of clearers as a constructor argument instead. Chris@14: */ Chris@0: public function setWarmers(array $warmers) Chris@0: { Chris@14: @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0, inject the list of clearers as a constructor argument instead.', __METHOD__), E_USER_DEPRECATED); Chris@14: Chris@17: $this->warmers = []; Chris@0: foreach ($warmers as $warmer) { Chris@0: $this->add($warmer); Chris@0: } Chris@0: } Chris@0: Chris@14: /** Chris@14: * @deprecated since version 3.4, to be removed in 4.0, inject the list of clearers as a constructor argument instead. Chris@14: */ Chris@0: public function add(CacheWarmerInterface $warmer) Chris@0: { Chris@14: if ($this->triggerDeprecation) { Chris@14: @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 3.4 and will be removed in 4.0, inject the list of clearers as a constructor argument instead.', __METHOD__), E_USER_DEPRECATED); Chris@14: } Chris@14: Chris@0: $this->warmers[] = $warmer; Chris@0: } Chris@0: }