PATH:
opt
/
cpanel
/
ea-wappspector
/
vendor
/
rector
/
rector
/
src
/
NodeTypeResolver
<?php declare (strict_types=1); namespace Rector\NodeTypeResolver; use PhpParser\Node\Stmt; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\CloningVisitor; use Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver; use Rector\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser; final class NodeScopeAndMetadataDecorator { /** * @readonly * @var \Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver */ private $phpStanNodeScopeResolver; /** * @readonly * @var \Rector\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser */ private $fileWithoutNamespaceNodeTraverser; /** * @readonly * @var \PhpParser\NodeTraverser */ private $nodeTraverser; public function __construct(CloningVisitor $cloningVisitor, PHPStanNodeScopeResolver $phpStanNodeScopeResolver, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser) { $this->phpStanNodeScopeResolver = $phpStanNodeScopeResolver; $this->fileWithoutNamespaceNodeTraverser = $fileWithoutNamespaceNodeTraverser; $this->nodeTraverser = new NodeTraverser(); // needed for format preserving printing $this->nodeTraverser->addVisitor($cloningVisitor); } /** * @param Stmt[] $stmts * @return Stmt[] */ public function decorateNodesFromFile(string $filePath, array $stmts) : array { $stmts = $this->fileWithoutNamespaceNodeTraverser->traverse($stmts); $stmts = $this->phpStanNodeScopeResolver->processNodes($stmts, $filePath); return $this->nodeTraverser->traverse($stmts); } }
[+]
PHPStan
[+]
Contract
[+]
..
[+]
DependencyInjection
[-] NodeTypeResolver.php
[edit]
[-] NodeScopeAndMetadataDecorator.php
[edit]
[+]
PhpDocNodeVisitor
[+]
PhpDoc
[+]
TypeComparator
[+]
ValueObject
[+]
TypeAnalyzer
[+]
Reflection
[+]
Node
[+]
NodeTypeCorrector
[+]
NodeTypeResolver