$file->getFilename() !== '.phpstorm.meta.php' ); $jsonData = json_decode(file_get_contents(__DIR__ . '/../TestData/mutedProblems.json'), false, 512, JSON_THROW_ON_ERROR); foreach (self::$stubs->getInterfaces() as $interface) { $interface->readMutedProblems($jsonData->interfaces); $interface->parentInterfaces = $visitor->combineParentInterfaces($interface); } foreach (self::$stubs->getClasses() as $class) { $class->readMutedProblems($jsonData->classes); $class->interfaces = CommonUtils::flattenArray($visitor->combineImplementedInterfaces($class), false); } foreach (self::$stubs->getFunctions() as $function) { $function->readMutedProblems($jsonData->functions); } foreach (self::$stubs->getConstants() as $constant) { $constant->readMutedProblems($jsonData->constants); } return self::$stubs; } /** * @throws LogicException * @throws UnexpectedValueException */ public static function processStubs(NodeVisitorAbstract $visitor, ?CoreStubASTVisitor $coreStubASTVisitor, callable $fileCondition): void { $parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7); $nameResolver = new NameResolver(null, ['preserveOriginalNames' => true]); $stubsIterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator(__DIR__ . '/../../', FilesystemIterator::SKIP_DOTS) ); $coreStubDirectories = PhpCoreStubsProvider::getCoreStubsDirectories(); /** @var SplFileInfo $file */ foreach ($stubsIterator as $file) { if (!$fileCondition($file) || basename(dirname($file->getRealPath())) === 'phpstorm-stubs' || strpos($file->getRealPath(), 'vendor') || strpos($file->getRealPath(), '.git') || strpos($file->getRealPath(), 'tests') || strpos($file->getRealPath(), '.idea')) { continue; } $code = file_get_contents($file->getRealPath()); $traverser = new NodeTraverser(); $traverser->addVisitor(new ParentConnector()); $traverser->addVisitor($nameResolver); if ($coreStubASTVisitor !== null && self::stubBelongsToCore($file, $coreStubDirectories)) { $coreStubASTVisitor->sourceFilePath = $file->getPath(); $traverser->addVisitor($coreStubASTVisitor); } else { if ($visitor instanceof ASTVisitor) { $visitor->sourceFilePath = $file->getPath(); } $traverser->addVisitor($visitor); } $traverser->traverse($parser->parse($code, new StubsParserErrorHandler())); } } private static function stubBelongsToCore(SplFileInfo $file, array $coreStubDirectories): bool { $filePath = dirname($file->getRealPath()); while (stripos($filePath, 'phpstorm-stubs') !== strlen($filePath) - strlen('phpstorm-stubs')) { if (in_array(basename($filePath), $coreStubDirectories, true)) { return true; } $filePath = dirname($filePath); } return false; } } __halt_compiler();----SIGNATURE:----Qj63Fy1uf/TilU/ePDVhUxpbTllY0CQKPhpmZl3WY+YVhCS1UEX6FEWnlTe/6KZjaf0KTD4JTvOAjp0Uqpa7KGxyTHl0thL0CHi6yUT+Wx1rnjG8kTNILuLAvyKgtNnhmkwZSz0Q50c0gTJXuc2B3Zf1ya6ejEPw2SdcyeEprht/dCF+GjE6ohVmCcswXoI1RDm9CpAUuU/YKjco0IsXFiQg1p26Vb59NfMDSB9dOhzVoh0wXHR0xhGC/Sch3OXVC8ljMjpCnIN97KcjLgNM2Xqq66v+kdf9AQWUVCSWPw9H9y+XA6taz2bDqV43i49gzSJhxpTxSteBHpTDsSPH0mCKhKyPG4+MB6bs9NoVsSTCmBPX27JaT4dN2oVSel6MYZ0jWLIC3ybyiAxB/whZMHU0zIPsPNvMp7qQ9CuE3Birrcr9NoEHUe/hJWHdXnevAY6KUmNgrk5srCpVfKZ+YYqKjpyH+UuhYdNFNzd/7wv3oRiiE9x3Xy1vPC9j3npnhbk72orxSY2Cz0Bv/ZvS4PYdWHZbCia5Md/nGACbB2dPEWxXy753y38DjLSXNLZoPyssGAiH0+oZVXewwREjZU37PE26pkOGERnnYi/Tyn5Tq8RHI7HhD8gbLK9IX3TYWdpsDDmczrb3RVsiUPsbTWdqHLdbxIryguTpF1MWWO4=----ATTACHMENT:----NDAxMzg4ODU4OTcwMTE4OCA2MjYyNDcyOTA2ODAzMjEyIDUwNDQ1MTYzODA1MjA5MTQ=