PHPSA\Analyzer\Factory::factory PHP Метод

factory() публичный статический Метод

public static factory ( EventManager $eventManager, Configuration $config ) : Analyzer
$eventManager Webiny\Component\EventManager\EventManager
$config PHPSA\Configuration
Результат PHPSA\Analyzer
    public static function factory(EventManager $eventManager, Configuration $config)
    {
        $analyzersConfig = $config->getValue('analyzers');
        $filterEnabled = function ($passClass) use($config, $analyzersConfig) {
            /** @var AnalyzerPass\Metadata $passMetadata */
            $passMetadata = $passClass::getMetadata();
            if (!isset($analyzersConfig[$passMetadata->getName()])) {
                return false;
            }
            if (!$analyzersConfig[$passMetadata->getName()]['enabled']) {
                return false;
            }
            if (!$passMetadata->allowsPhpVersion($config->getValue('language_level'))) {
                return false;
            }
            return true;
        };
        $instanciate = function ($passClass) use($analyzersConfig) {
            $passName = $passClass::getMetadata()->getName();
            return new $passClass($analyzersConfig[$passName]);
        };
        $analyzer = new Analyzer($eventManager);
        $analyzer->registerExpressionPasses(array_map($instanciate, array_filter(self::getExpressionPasses(), $filterEnabled)));
        $analyzer->registerStatementPasses(array_map($instanciate, array_filter(self::getStatementPasses(), $filterEnabled)));
        $analyzer->registerScalarPasses(array_map($instanciate, array_filter(self::getScalarPasses(), $filterEnabled)));
        $analyzer->bind();
        return $analyzer;
    }

Usage Example

Пример #1
0
 /**
  * @param string $analyzerName
  * @return EventManager
  * @throws \Webiny\Component\EventManager\EventManagerException
  */
 protected function getEventManager($analyzerName)
 {
     if (!class_exists($analyzerName, true)) {
         throw new \InvalidArgumentException("Analyzer with name: {$analyzerName} doesnot exist");
     }
     /** @var \PHPSA\Analyzer\Pass\Metadata $metaData */
     $metaData = $analyzerName::getMetadata();
     if (!$metaData->allowsPhpVersion(PHP_VERSION)) {
         parent::markTestSkipped(sprintf('We cannot tests %s with %s because PHP required version is %s', $analyzerName, PHP_VERSION, $metaData->getRequiredPhpVersion()));
     }
     $analyzerConfiguration = $metaData->getConfiguration();
     $analyzerConfiguration->attribute('enabled', true);
     $config = [$analyzerName::getMetadata()->getConfiguration()];
     $em = EventManager::getInstance();
     $configuration = new Configuration([], $config);
     \PHPSA\Analyzer\Factory::factory($em, $configuration);
     return $em;
 }
All Usage Examples Of PHPSA\Analyzer\Factory::factory