public function beforeCompile() { $config = $this->getConfig($this->defaults); $cacheDirectory = $config['cacheDir'] . "/"; $tag = $this->prefix(static::LAZY); if ($config['autogenerateProxyClasses']) { foreach (array_keys($this->builder->findByTag($tag)) as $serviceName) { $this->createLazyProxy($serviceName); } } else { $this->proxyGenerator = new LazyLoadingValueHolderGenerator(); foreach (array_keys($this->builder->findByTag($tag)) as $serviceName) { $this->createEagerProxy($serviceName, $cacheDirectory); } } }
/** * @param ContainerBuilder $builder * @return array */ private function getSortedConfigurators(ContainerBuilder $builder) { $configurators = $builder->findByTag(self::TAG_CONFIGURATOR); uasort($configurators, function ($a, $b) { $a = is_numeric($a) ? (double) $a : 0; $b = is_numeric($b) ? (double) $b : 0; return $a < $b ? -1 : ($a > $b ? 1 : 0); }); return $configurators; }
private function createSubscribersMap(\Nette\DI\ContainerBuilder $builder) { $map = []; foreach ($builder->findByTag(self::TAG_SUBSCRIBER) as $serviceName => $tagProperties) { $def = $builder->getDefinition($serviceName); $class = $def->getClass(); $events = $class::getSubscribedEvents(); foreach ($events as $eventName => $callbacks) { foreach ($callbacks as $function) { $map[$eventName][] = [$serviceName, $function]; } } } return $map; }
/** * @param Nette\DI\ContainerBuilder $builder * @return array */ private function findRoutes(Nette\DI\ContainerBuilder $builder) { /** * Find all presenters and their routes */ $presenters = $builder->findByTag('nette.presenter'); $routes = []; foreach ($presenters as $presenter) { $this->findRoutesInPresenter($presenter, $routes); } /** * Return routes sorted by priority */ return $this->sortByPriority($routes); }
private function registerWidgets(ContainerBuilder $builder) { $widgets = $builder->getDefinition($this->prefix('widgets')); foreach (array_keys($builder->findByTag(self::WIDGET_TAG)) as $widget) { $definition = $builder->getDefinition($widget); if (!isset($definition->tags['name'])) { throw new InvalidArgumentException('Missing name for widget ' . $widget); } $name = $definition->tags['name']; $widgets->addSetup('addWidget', [$name, '@' . $widget]); } }
/** * @param \Nette\DI\ContainerBuilder $builder */ private function buildAuthorizatorList(ContainerBuilder $builder) { $services = []; foreach ($builder->findByTag($this->prefix(self::AUTHORIZATOR_TAG)) as $name => $priority) { if (!Validators::isNumericInt($priority)) { throw new \Nette\InvalidArgumentException(sprintf('Authorizator priority for service %s has to be integer, %s given.', $name, gettype($priority))); } $services[(int) $priority][] = $name; } krsort($services); return iterator_to_array(new \RecursiveIteratorIterator(new \RecursiveArrayIterator($services)), FALSE); }
function afterCompile(ContainerBuilder $container, Nette\Utils\PhpGenerator\ClassType $class) { $initialize = $class->methods['initialize']; if (isset($container->parameters['tempDir'])) { $initialize->addBody($this->checkTempDir($container->expand($container->parameters['tempDir']))); } foreach ($container->findByTag('run') as $name => $foo) { $initialize->addBody('$this->getService(?);', array($name)); } }