diff --git a/rules/code-quality/src/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector.php b/rules/code-quality/src/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector.php index 013bf423c3e..f75e96318b3 100644 --- a/rules/code-quality/src/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector.php +++ b/rules/code-quality/src/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector.php @@ -12,6 +12,7 @@ use PhpParser\Node\Expr\BinaryOp\NotIdentical; use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Expr\Isset_; use PhpParser\Node\Expr\PropertyFetch; +use PhpParser\Node\Expr\Variable; use PhpParser\Node\Identifier; use PhpParser\Node\Name; use PhpParser\Node\Scalar\String_; @@ -96,10 +97,13 @@ CODE_SAMPLE continue; } - /** @var Identifier $name */ + /** @var Identifier|Variable $name */ $name = $issetVar->name; - $property = $name->toString(); + if (! $name instanceof Identifier) { + continue; + } + $property = $name->toString(); if ($type instanceof ObjectType) { /** @var string $className */ $className = $type->getClassName(); diff --git a/rules/code-quality/tests/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector/Fixture/skip_property_as_variable.php.inc b/rules/code-quality/tests/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector/Fixture/skip_property_as_variable.php.inc new file mode 100644 index 00000000000..07a7adcb881 --- /dev/null +++ b/rules/code-quality/tests/Rector/Isset_/IssetOnPropertyObjectToPropertyExistsRector/Fixture/skip_property_as_variable.php.inc @@ -0,0 +1,18 @@ +getStorage()->$name); + } + + private function getStorage(): array + { + return []; + } +} + +?>