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']); + } +} + +?> 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;