* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\Argument\ArgumentInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Reference; /** * Propagate "container.hot_path" tags to referenced services. * * @author Nicolas Grekas
*/ class ResolveHotPathPass extends AbstractRecursivePass { private $tagName; private $resolvedIds = array(); public function __construct($tagName = 'container.hot_path') { $this->tagName = $tagName; } /** * {@inheritdoc} */ public function process(ContainerBuilder $container) { try { parent::process($container); $container->getDefinition('service_container')->clearTag($this->tagName); } finally { $this->resolvedIds = array(); } } /** * {@inheritdoc} */ protected function processValue($value, $isRoot = false) { if ($value instanceof ArgumentInterface) { return $value; } if ($value instanceof Definition && $isRoot && (isset($this->resolvedIds[$this->currentId]) || !$value->hasTag($this->tagName) || $value->isDeprecated())) { return $value->isDeprecated() ? $value->clearTag($this->tagName) : $value; } if ($value instanceof Reference && ContainerBuilder::IGNORE_ON_UNINITIALIZED_REFERENCE !== $value->getInvalidBehavior() && $this->container->has($id = $this->container->normalizeId($value))) { $definition = $this->container->findDefinition($id); if (!$definition->hasTag($this->tagName) && !$definition->isDeprecated()) { $this->resolvedIds[$id] = true; $definition->addTag($this->tagName); parent::processValue($definition, false); } return $value; } return parent::processValue($value, $isRoot); } } __halt_compiler();----SIGNATURE:----F55o+iV1M+uz8/VpyD6Oh7g31lXs/pXosD1rYNKoudqeicydOcNZlbSZs3yf5diyoK4H7DiXcnY9EBNmfspeC+zMoxbWIpqWMJ/BV9lGi8vawjSUWpKiBczdpZ7dnCuF46LU36ChhkhB2C8x5cVQ2zOv5RyX+AnB8mWLXfE0rXQoZf04nfUvtETyPdgf0vgLRCnefLn5zqUgQV4mgHaAiBNGgINzVsSRXQGuXqifMg/IMMsnnfq1Ml+PiJzq1aGXcquHpyUYVfDtuMbYQOEVcQ08bCVzmFnnsPsBh0/bE3uLLW/yyAXfI5QCQcwKN/YNXAU4py0g1CuBGkEpgf5dHelJcLU8iPAjU9qCzRqWnbMtZLGmG+iUEkZvJpjl6HZNUVvvg63O/S4K7UX3uECa5Ev0ktseXXtK1rEcL7pe+nwcxdme1p5ExuSwltw4QfSRZpxscL0jRd35n/SjKXCvkrjIahzqhrz8DP23EtQi3U7fwAOotBtk6Y63qfB5zF+/+zM/VW5BIbAD0qU7bppWJ0xb8G+/TSAQeqFeqGS84kSdzRXzNcsbYqMEG0mI+SjvEv65VXPvHd5DJ3MEAvPaNueL4Se9HCsW04AOsz2vfcifvsBQma5epnfeapk2s1U/NSTPyRKPP7W7uvySyCk1vwl0O3Sf7+oIy/SzGjp1rlg=----ATTACHMENT:----MjMzMzE2Mjk2NjYzMTA3MiA4MTMwNzQ5ODk5MDkzMTkyIDk5Mjg4MzA5OTEzMTkzMw==