mirror of
https://github.com/rectorphp/rector.git
synced 2024-05-29 15:30:51 +00:00
7e7a2f067a
476cfb00cb
disable fallback for now
38 lines
1.1 KiB
PHP
38 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare (strict_types=1);
|
|
namespace Rector\NodeAnalyzer;
|
|
|
|
use PhpParser\Node\Expr\BinaryOp;
|
|
use PhpParser\Node\Expr\FuncCall;
|
|
use Rector\NodeNameResolver\NodeNameResolver;
|
|
use Rector\ValueObject\FuncCallAndExpr;
|
|
final class BinaryOpAnalyzer
|
|
{
|
|
/**
|
|
* @readonly
|
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
|
*/
|
|
private $nodeNameResolver;
|
|
public function __construct(NodeNameResolver $nodeNameResolver)
|
|
{
|
|
$this->nodeNameResolver = $nodeNameResolver;
|
|
}
|
|
public function matchFuncCallAndOtherExpr(BinaryOp $binaryOp, string $funcCallName) : ?FuncCallAndExpr
|
|
{
|
|
if ($binaryOp->left instanceof FuncCall) {
|
|
if (!$this->nodeNameResolver->isName($binaryOp->left, $funcCallName)) {
|
|
return null;
|
|
}
|
|
return new FuncCallAndExpr($binaryOp->left, $binaryOp->right);
|
|
}
|
|
if ($binaryOp->right instanceof FuncCall) {
|
|
if (!$this->nodeNameResolver->isName($binaryOp->right, $funcCallName)) {
|
|
return null;
|
|
}
|
|
return new FuncCallAndExpr($binaryOp->right, $binaryOp->left);
|
|
}
|
|
return null;
|
|
}
|
|
}
|