2021-04-11 12:27:20 +02:00
|
|
|
<?php
|
|
|
|
|
2021-05-09 20:15:43 +00:00
|
|
|
declare (strict_types=1);
|
2021-04-11 12:27:20 +02:00
|
|
|
namespace Rector\NodeCollector\NodeAnalyzer;
|
|
|
|
|
|
|
|
use PhpParser\Node\Expr;
|
|
|
|
use PhpParser\Node\Expr\BinaryOp;
|
|
|
|
use PhpParser\Node\Expr\BinaryOp\BooleanAnd;
|
|
|
|
final class BooleanAndAnalyzer
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @return Expr[]
|
|
|
|
*/
|
2021-05-10 22:23:08 +00:00
|
|
|
public function findBooleanAndConditions(\PhpParser\Node\Expr\BinaryOp\BooleanAnd $booleanAnd) : array
|
2021-04-11 12:27:20 +02:00
|
|
|
{
|
|
|
|
$conditions = [];
|
2021-05-10 22:23:08 +00:00
|
|
|
while ($booleanAnd instanceof \PhpParser\Node\Expr\BinaryOp) {
|
2021-04-11 12:27:20 +02:00
|
|
|
$conditions[] = $booleanAnd->right;
|
|
|
|
$booleanAnd = $booleanAnd->left;
|
2021-05-10 22:23:08 +00:00
|
|
|
if (!$booleanAnd instanceof \PhpParser\Node\Expr\BinaryOp\BooleanAnd) {
|
2021-04-11 12:27:20 +02:00
|
|
|
$conditions[] = $booleanAnd;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2021-05-09 20:15:43 +00:00
|
|
|
\krsort($conditions);
|
2021-04-11 12:27:20 +02:00
|
|
|
return $conditions;
|
|
|
|
}
|
|
|
|
}
|