findByTag() public method

Gets the service objects of the specified tag.
public findByTag ( $tag ) : array
return array of [service name => tag attributes]
 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);
         }
     }
 }
Example #2
0
 /**
  * @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);
 }
Example #5
0
 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]);
     }
 }
Example #6
0
 /**
  * @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);
 }
Example #7
0
 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));
     }
 }