rector/rules/Transform/ValueObject/StaticCallToMethodCall.php
Tomas Votruba c726969380 Updated Rector to commit fc10fce13dcf9767f54e4202b509020fed338645
fc10fce13d [Rectify] [Php81] Enable Rectify on Readonly Property only (#1384)
2021-12-04 12:47:17 +00:00

71 lines
1.8 KiB
PHP

<?php
declare (strict_types=1);
namespace Rector\Transform\ValueObject;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name;
use PHPStan\Type\ObjectType;
final class StaticCallToMethodCall
{
/**
* @readonly
* @var string
*/
private $staticClass;
/**
* @readonly
* @var string
*/
private $staticMethod;
/**
* @readonly
* @var string
*/
private $classType;
/**
* @readonly
* @var string
*/
private $methodName;
public function __construct(string $staticClass, string $staticMethod, string $classType, string $methodName)
{
$this->staticClass = $staticClass;
$this->staticMethod = $staticMethod;
$this->classType = $classType;
$this->methodName = $methodName;
}
public function getClassObjectType() : \PHPStan\Type\ObjectType
{
return new \PHPStan\Type\ObjectType($this->classType);
}
public function getClassType() : string
{
return $this->classType;
}
public function getMethodName() : string
{
return $this->methodName;
}
public function isStaticCallMatch(\PhpParser\Node\Expr\StaticCall $staticCall) : bool
{
if (!$staticCall->class instanceof \PhpParser\Node\Name) {
return \false;
}
$staticCallClassName = $staticCall->class->toString();
if ($staticCallClassName !== $this->staticClass) {
return \false;
}
if (!$staticCall->name instanceof \PhpParser\Node\Identifier) {
return \false;
}
// all methods
if ($this->staticMethod === '*') {
return \true;
}
$staticCallMethodName = $staticCall->name->toString();
return $staticCallMethodName === $this->staticMethod;
}
}