Sstalle\php7cc\Infrastructure\ContainerBuilder::buildContainer PHP Метод

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

public buildContainer ( Symfony\Component\Console\Output\OutputInterface $output, integer $intSize ) : Pimple\Container
$output Symfony\Component\Console\Output\OutputInterface
$intSize integer
Результат Pimple\Container
    public function buildContainer(OutputInterface $output, $intSize)
    {
        $this->checkerVisitors[static::BITWISE_SHIFT_VISITOR_ID]['arguments'][] = $intSize;
        $container = new Container();
        $container['lexer'] = function () {
            return new ExtendedLexer(array('usedAttributes' => array('startLine', 'endLine', 'startTokenPos', 'endTokenPos')));
        };
        $container['parser'] = function ($c) {
            return new Parser($c['lexer']);
        };
        $this->addVisitors($container);
        $visitors = $this->checkerVisitors;
        $container['traverser'] = function () {
            $traverser = new Traverser(false);
            // Resolve fully qualified name (class, interface, function, etc) to ease some process
            $traverser->addVisitor(new NameResolver());
            return $traverser;
        };
        $container['nodeVisitorResolver'] = function ($c) use($visitors) {
            $visitorInstances = array();
            foreach (array_keys($visitors) as $visitorServiceName) {
                $visitorInstances[] = $c[$visitorServiceName];
            }
            return new Resolver($visitorInstances);
        };
        $container['nodeAnalyzer.functionAnalyzer'] = function () {
            return new FunctionAnalyzer();
        };
        $container['contextChecker'] = function ($c) {
            return new ContextChecker($c['parser'], $c['lexer'], $c['traverser']);
        };
        $container['output'] = function () use($output) {
            return new CLIOutputBridge($output);
        };
        $container['nodePrinter'] = function () {
            return new StandardPrettyPrinter();
        };
        $container['resultPrinter'] = function ($c) {
            return new CLIResultPrinter($c['output'], $c['nodePrinter'], $c['nodeStatementsRemover']);
        };
        $container['pathChecker'] = function ($c) {
            return new PathChecker($c['contextChecker'], $c['resultPrinter']);
        };
        $container['nodeStatementsRemover'] = function () {
            return new NodeStatementsRemover();
        };
        $container['pathTraversableFactory'] = function ($c) {
            return new PathTraversableFactory($c['excludedPathCanonicalizer']);
        };
        $container['pathCheckExecutor'] = function ($c) {
            return new PathCheckExecutor($c['pathTraversableFactory'], $c['pathChecker'], $c['traverser'], $c['nodeVisitorResolver']);
        };
        $container['excludedPathCanonicalizer'] = function ($c) {
            return new ExcludedPathCanonicalizer($c['pathHelper']);
        };
        $container['osDetector'] = function () {
            return new OSDetector();
        };
        $container['pathHelperFactory'] = function ($c) {
            return new PathHelperFactory($c['osDetector']);
        };
        $container['pathHelper'] = function ($c) {
            /** @var PathHelperFactory $pathHelperFactory */
            $pathHelperFactory = $c['pathHelperFactory'];
            return $pathHelperFactory->createPathHelper();
        };
        $container['regExpParser'] = function () {
            return new RegExpParser();
        };
        return $container;
    }

Usage Example

Пример #1
0
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $paths = $input->getArgument(static::PATHS_ARGUMENT_NAME);
     foreach ($paths as $path) {
         if (!is_file($path) && !is_dir($path)) {
             $output->writeln(sprintf('Path %s must be a file or a directory', $path));
             return;
         }
     }
     $extensionsArgumentValue = $input->getOption(static::EXTENSIONS_OPTION_NAME);
     $extensions = explode(',', $extensionsArgumentValue);
     if (!is_array($extensions)) {
         $output->writeln(sprintf('Something went wrong while parsing file extensions you specified. ' . 'Check that %s is a comma-separated list of extensions', $extensionsArgumentValue));
         return;
     }
     $messageLevelName = $input->getOption(static::MESSAGE_LEVEL_OPTION_NAME);
     if (!isset(static::$messageLevelMap[$messageLevelName])) {
         $output->writeln(sprintf('Unknown message level %s', $messageLevelName));
         return;
     }
     $messageLevel = static::$messageLevelMap[$messageLevelName];
     $intSize = (int) $input->getOption(static::INT_SIZE_OPTION_NAME);
     if ($intSize <= 0) {
         $output->writeln('Integer size must be greater than 0');
         return;
     }
     $containerBuilder = new ContainerBuilder();
     $container = $containerBuilder->buildContainer($output, $intSize);
     $checkSettings = new PathCheckSettings($paths, $extensions);
     $checkSettings->setExcludedPaths($input->getOption(static::EXCEPT_OPTION_NAME));
     $checkSettings->setMessageLevel($messageLevel);
     $checkSettings->setUseRelativePaths($input->getOption(static::RELATIVE_PATHS_OPTION_NAME));
     $container['pathCheckExecutor']->check($checkSettings);
 }
All Usage Examples Of Sstalle\php7cc\Infrastructure\ContainerBuilder::buildContainer