mirror of
https://github.com/rectorphp/rector.git
synced 2025-02-09 01:21:17 +01:00
55 lines
1.6 KiB
PHP
55 lines
1.6 KiB
PHP
<?php
|
|
|
|
declare (strict_types=1);
|
|
namespace Rector\Arguments\NodeAnalyzer;
|
|
|
|
use PhpParser\Node\Expr\MethodCall;
|
|
use PhpParser\Node\Expr\StaticCall;
|
|
use PhpParser\Node\Name;
|
|
use Rector\Arguments\ValueObject\ArgumentAdder;
|
|
use Rector\NodeNameResolver\NodeNameResolver;
|
|
final class ArgumentAddingScope
|
|
{
|
|
/**
|
|
* @var string
|
|
*/
|
|
public const SCOPE_PARENT_CALL = 'parent_call';
|
|
/**
|
|
* @var string
|
|
*/
|
|
public const SCOPE_METHOD_CALL = 'method_call';
|
|
/**
|
|
* @var string
|
|
*/
|
|
public const SCOPE_CLASS_METHOD = 'class_method';
|
|
/**
|
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
|
*/
|
|
private $nodeNameResolver;
|
|
public function __construct(\Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
|
|
{
|
|
$this->nodeNameResolver = $nodeNameResolver;
|
|
}
|
|
/**
|
|
* @param \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\StaticCall $expr
|
|
*/
|
|
public function isInCorrectScope($expr, \Rector\Arguments\ValueObject\ArgumentAdder $argumentAdder) : bool
|
|
{
|
|
if ($argumentAdder->getScope() === null) {
|
|
return \true;
|
|
}
|
|
$scope = $argumentAdder->getScope();
|
|
if ($expr instanceof \PhpParser\Node\Expr\StaticCall) {
|
|
if (!$expr->class instanceof \PhpParser\Node\Name) {
|
|
return \false;
|
|
}
|
|
if ($this->nodeNameResolver->isName($expr->class, 'parent')) {
|
|
return $scope === self::SCOPE_PARENT_CALL;
|
|
}
|
|
return $scope === self::SCOPE_METHOD_CALL;
|
|
}
|
|
// MethodCall
|
|
return $scope === self::SCOPE_METHOD_CALL;
|
|
}
|
|
}
|