GrumPHP\Parser\Php\Configurator\TraverserConfigurator::configure PHP Метод

configure() публичный Метод

public configure ( PhpParser\NodeTraverserInterface $traverser )
$traverser PhpParser\NodeTraverserInterface
    public function configure(NodeTraverserInterface $traverser)
    {
        $this->guardTaskHasVisitors();
        $this->guardContextIsRegistered();
        $configuredVisitors = $this->loadEnabledVisitorsForCurrentOptions();
        $configuredVisitorIds = array_keys($configuredVisitors);
        $registeredVisitors = $this->registeredVisitorIds;
        $registeredVisitorsIds = array_keys($registeredVisitors);
        $visitorIds = array_values(array_intersect($registeredVisitorsIds, $configuredVisitorIds));
        $unknownConfiguredVisitorIds = array_diff($configuredVisitorIds, $registeredVisitorsIds);
        if (count($unknownConfiguredVisitorIds)) {
            throw new RuntimeException(sprintf('Found unknown php_parser visitors: %s', implode(',', $unknownConfiguredVisitorIds)));
        }
        foreach ($visitorIds as $visitorAlias) {
            $visitorId = $registeredVisitors[$visitorAlias];
            $visitor = $this->container->get($visitorId);
            if ($visitor instanceof ContextAwareVisitorInterface) {
                $visitor->setContext($this->context);
            }
            $options = $configuredVisitors[$visitorAlias];
            if ($visitor instanceof ConfigurableVisitorInterface && is_array($options)) {
                $visitor->configure($options);
            }
            $traverser->addVisitor($visitor);
        }
        // Reset context to make sure the next configure call will actually run in the correct context:
        $this->context = null;
    }

Usage Example

Пример #1
0
 /**
  * @param array         $parserOptions
  * @param ParserContext $context
  *
  * @return NodeTraverser
  * @throws \GrumPHP\Exception\RuntimeException
  */
 public function createForTaskContext(array $parserOptions, ParserContext $context)
 {
     $this->configurator->registerOptions($parserOptions);
     $this->configurator->registerContext($context);
     $traverser = new NodeTraverser();
     $this->configurator->configure($traverser);
     return $traverser;
 }
All Usage Examples Of GrumPHP\Parser\Php\Configurator\TraverserConfigurator::configure