/** * @return \PHPSA\Context */ protected function getContext() { /** @var \PHPSA\Context $context */ $context = $this->getMock('\\PHPSA\\Context', array('notice'), array(new ConsoleOutput(), new Application(), EventManager::getInstance())); $context->setScope(new ClassDefinition('MathTest', null, 0)); return $context; }
/** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $output->writeln(''); if (extension_loaded('xdebug')) { /** * This will disable only showing stack traces on error conditions. */ if (function_exists('xdebug_disable')) { xdebug_disable(); } $output->writeln('<error>It is highly recommended to disable the XDebug extension before invoking this command.</error>'); } $parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7, new \PhpParser\Lexer\Emulative(['usedAttributes' => ['comments', 'startLine', 'endLine', 'startTokenPos', 'endTokenPos']])); /** @var Application $application */ $application = $this->getApplication(); $application->compiler = new Compiler(); $em = EventManager::getInstance(); $context = new Context($output, $application, $em); $fileParser = new FileParser($parser, $this->getCompiler()); $path = $input->getArgument('path'); if (is_dir($path)) { $directoryIterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)); $output->writeln('Scanning directory <info>' . $path . '</info>'); $count = 0; /** @var SplFileInfo $file */ foreach ($directoryIterator as $file) { if ($file->getExtension() !== 'php') { continue; } $context->debug($file->getPathname()); $count++; } $output->writeln("Found <info>{$count} files</info>"); if ($count > 100) { $output->writeln('<comment>Caution: You are trying to scan a lot of files; this might be slow. For bigger libraries, consider setting up a dedicated platform or using ci.lowl.io.</comment>'); } $output->writeln(''); /** @var SplFileInfo $file */ foreach ($directoryIterator as $file) { if ($file->getExtension() !== 'php') { continue; } $fileParser->parserFile($file->getPathname(), $context); } } elseif (is_file($path)) { $fileParser->parserFile($path, $context); } /** * Step 2 Recursive check ... */ $application->compiler->compile($context); }
public function testEvenManager() { // Create event listener $callback = function (Event $event) { return $event->parameter * 10; }; $secondCallback = function (Event $event) { return $event->parameter * 20; }; // This listener should be executed last EventManager::getInstance()->listen('test.event')->handler($callback)->priority(200); // This listener should be executed first EventManager::getInstance()->listen('test.event')->handler($secondCallback)->priority(400); $results = EventManager::getInstance()->fire('test.event', ['parameter' => 2]); // Event results are returned in form of an array $this->assertEquals(40, $results[0]); $this->assertEquals(20, $results[1]); }
/** * @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; }