diff --git a/src/Rules/NoDynamicNameRule.php b/src/Rules/NoDynamicNameRule.php index abba040d..eb707ea8 100644 --- a/src/Rules/NoDynamicNameRule.php +++ b/src/Rules/NoDynamicNameRule.php @@ -65,6 +65,10 @@ public function processNode(Node $node, Scope $scope): array } if ($node instanceof MethodCall || $node instanceof StaticCall || $node instanceof FuncCall || $node instanceof PropertyFetch) { + // skip magic calls, as dynamic names expected + if (in_array($scope->getFunctionName(), ['__get', '__set'], true)) { + return []; + } if (! $node->name instanceof Expr) { return []; diff --git a/tests/Rules/NoDynamicNameRule/Fixture/SkipMagicGet.php b/tests/Rules/NoDynamicNameRule/Fixture/SkipMagicGet.php new file mode 100644 index 00000000..f87e230b --- /dev/null +++ b/tests/Rules/NoDynamicNameRule/Fixture/SkipMagicGet.php @@ -0,0 +1,13 @@ +{$name}; + } +} diff --git a/tests/Rules/NoDynamicNameRule/NoDynamicNameRuleTest.php b/tests/Rules/NoDynamicNameRule/NoDynamicNameRuleTest.php index 629352a8..b09c2f66 100644 --- a/tests/Rules/NoDynamicNameRule/NoDynamicNameRuleTest.php +++ b/tests/Rules/NoDynamicNameRule/NoDynamicNameRuleTest.php @@ -38,6 +38,7 @@ public static function provideData(): Iterator yield [__DIR__ . '/Fixture/SkipInvokable.php', []]; yield [__DIR__ . '/Fixture/SkipClosure.php', []]; yield [__DIR__ . '/Fixture/SkipCallable.php', []]; + yield [__DIR__ . '/Fixture/SkipMagicGet.php', []]; yield [__DIR__ . '/Fixture/SkipCallableUnion.php', []]; yield [__DIR__ . '/Fixture/SkipNullableClosure.php', []]; yield [__DIR__ . '/Fixture/SkipImmediatelyInvokedFunctionExpression.php', []];