mirror of
https://github.com/rectorphp/rector.git
synced 2025-02-15 05:15:04 +01:00
70 lines
1.4 KiB
PHP
70 lines
1.4 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace Rector\Injection\ValueObject;
|
||
|
|
||
|
use PhpParser\Node\Expr\StaticCall;
|
||
|
use PhpParser\Node\Identifier;
|
||
|
use PhpParser\Node\Name;
|
||
|
|
||
|
final class StaticCallToMethodCall
|
||
|
{
|
||
|
/**
|
||
|
* @var string
|
||
|
*/
|
||
|
private $staticClass;
|
||
|
|
||
|
/**
|
||
|
* @var string
|
||
|
*/
|
||
|
private $staticMethod;
|
||
|
|
||
|
/**
|
||
|
* @var string
|
||
|
*/
|
||
|
private $classType;
|
||
|
|
||
|
/**
|
||
|
* @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 getClassType(): string
|
||
|
{
|
||
|
return $this->classType;
|
||
|
}
|
||
|
|
||
|
public function getMethodName(): string
|
||
|
{
|
||
|
return $this->methodName;
|
||
|
}
|
||
|
|
||
|
public function matchStaticCall(StaticCall $staticCall): bool
|
||
|
{
|
||
|
if (! $staticCall->class instanceof Name) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$staticCallClassName = $staticCall->class->toString();
|
||
|
if ($staticCallClassName !== $this->staticClass) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
if (! $staticCall->name instanceof Identifier) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$staticCallMethodName = $staticCall->name->toString();
|
||
|
return $staticCallMethodName === $this->staticMethod;
|
||
|
}
|
||
|
}
|