From 31815d28eb936ef2f0cb29c28759c532416fd685 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 24 May 2026 20:41:44 +0700 Subject: [PATCH 1/2] [CodingStyle] Handle namespaced function string on FunctionFirstClassCallableRector --- .../Fixture/namespaced_function.php.inc | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 rules-tests/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector/Fixture/namespaced_function.php.inc diff --git a/rules-tests/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector/Fixture/namespaced_function.php.inc b/rules-tests/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector/Fixture/namespaced_function.php.inc new file mode 100644 index 00000000000..9a986a657b3 --- /dev/null +++ b/rules-tests/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector/Fixture/namespaced_function.php.inc @@ -0,0 +1,29 @@ + works. + return array_map('Cake\Utility\Inflector::underscore', ['FooBar', 'BazQux']); + } +} + +?> +----- + works. + return array_map(\Cake\Utility\Inflector::underscore(...), ['FooBar', 'BazQux']); + } +} + +?> From 0cb8f1b772a08e645dca8050789899891102170b Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 24 May 2026 20:42:40 +0700 Subject: [PATCH 2/2] fix --- .../Rector/FuncCall/FunctionFirstClassCallableRector.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rules/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector.php b/rules/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector.php index 5a610bc3e15..8b98d55fcf0 100644 --- a/rules/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector.php +++ b/rules/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector.php @@ -8,6 +8,7 @@ use PhpParser\Node\Arg; use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Name; +use PhpParser\Node\Name\FullyQualified; use PhpParser\Node\Scalar\String_; use PhpParser\Node\VariadicPlaceholder; use Rector\Rector\AbstractRector; @@ -101,7 +102,12 @@ public function refactor(Node $node): ?FuncCall } $node->args[$key] = new Arg( - new FuncCall(new Name($arg->value->value), [new VariadicPlaceholder()]), + new FuncCall( + str_contains($arg->value->value, '\\') + ? new FullyQualified($arg->value->value) + : new Name($arg->value->value), + [new VariadicPlaceholder()] + ), name: $arg->name ); $hasChanged = true;