%PDF- %PDF-
Direktori : /home/vacivi36/code/vendor/rector/rector/src/NodeManipulator/ |
Current File : /home/vacivi36/code/vendor/rector/rector/src/NodeManipulator/FunctionLikeManipulator.php |
<?php declare (strict_types=1); namespace Rector\Core\NodeManipulator; use PhpParser\Node; use PhpParser\Node\FunctionLike; use PhpParser\Node\Stmt\Function_; use PhpParser\Node\Stmt\Return_; use Rector\Core\NodeAnalyzer\PropertyFetchAnalyzer; use Rector\NodeNameResolver\NodeNameResolver; use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser; final class FunctionLikeManipulator { /** * @readonly * @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser */ private $simpleCallableNodeTraverser; /** * @readonly * @var \Rector\NodeNameResolver\NodeNameResolver */ private $nodeNameResolver; /** * @readonly * @var \Rector\Core\NodeAnalyzer\PropertyFetchAnalyzer */ private $propertyFetchAnalyzer; public function __construct(SimpleCallableNodeTraverser $simpleCallableNodeTraverser, NodeNameResolver $nodeNameResolver, PropertyFetchAnalyzer $propertyFetchAnalyzer) { $this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser; $this->nodeNameResolver = $nodeNameResolver; $this->propertyFetchAnalyzer = $propertyFetchAnalyzer; } /** * @return string[] */ public function getReturnedLocalPropertyNames(FunctionLike $functionLike) : array { // process only class methods if ($functionLike instanceof Function_) { return []; } $returnedLocalPropertyNames = []; $this->simpleCallableNodeTraverser->traverseNodesWithCallable($functionLike, function (Node $node) use(&$returnedLocalPropertyNames) { if (!$node instanceof Return_) { return null; } if ($node->expr === null) { return null; } if (!$this->propertyFetchAnalyzer->isLocalPropertyFetch($node->expr)) { return null; } $propertyName = $this->nodeNameResolver->getName($node->expr); if ($propertyName === null) { return null; } $returnedLocalPropertyNames[] = $propertyName; }); return $returnedLocalPropertyNames; } /** * @return string[] */ public function resolveParamNames(FunctionLike $functionLike) : array { $paramNames = []; foreach ($functionLike->getParams() as $param) { $paramNames[] = $this->nodeNameResolver->getName($param); } return $paramNames; } }