REDROOM
PHP 8.2.31
Path:
Logout
Edit File
Size: 2.99 KB
Close
//opt/cpanel/ea-wappspector/vendor/rector/rector/rules/CodingStyle/Rector/FuncCall/FunctionFirstClassCallableRector.php
Text
Base64
<?php declare (strict_types=1); namespace Rector\CodingStyle\Rector\FuncCall; use PhpParser\Node; use PhpParser\Node\Arg; use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Name; use PhpParser\Node\Scalar\String_; use PhpParser\Node\VariadicPlaceholder; use PHPStan\Analyser\Scope; use Rector\Rector\AbstractScopeAwareRector; use Rector\ValueObject\PhpVersion; use Rector\VersionBonding\Contract\MinPhpVersionInterface; use ReflectionException; use ReflectionFunction; use ReflectionNamedType; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; /** * @see \Rector\Tests\CodingStyle\Rector\FuncCall\FunctionFirstClassCallableRector\FunctionFirstClassCallableRectorTest */ final class FunctionFirstClassCallableRector extends AbstractScopeAwareRector implements MinPhpVersionInterface { public function getRuleDefinition() : RuleDefinition { // see RFC https://wiki.php.net/rfc/first_class_callable_syntax return new RuleDefinition('Upgrade string callback functions to first class callable', [new CodeSample(<<<'CODE_SAMPLE' final class SomeClass { public function run(array $data) { return array_map('trim', $data); } } CODE_SAMPLE , <<<'CODE_SAMPLE' final class SomeClass { public function run(array $data) { return array_map(trim(...), $data); } } CODE_SAMPLE )]); } /** * @return array<class-string<Node>> */ public function getNodeTypes() : array { return [FuncCall::class]; } public function refactorWithScope(Node $node, Scope $scope) : ?FuncCall { if (!$node instanceof FuncCall) { return null; } if (!$node->name instanceof Name) { return null; } if ($node->isFirstClassCallable()) { return null; } $functionName = (string) $this->getName($node); try { $reflectionFunction = new ReflectionFunction($functionName); } catch (ReflectionException $exception) { return null; } $callableArgs = []; foreach ($reflectionFunction->getParameters() as $reflectionParameter) { if ($reflectionParameter->getType() instanceof ReflectionNamedType && $reflectionParameter->getType()->getName() === 'callable') { $callableArgs[] = $reflectionParameter->getPosition(); } } $hasChanged = \false; foreach ($node->getArgs() as $key => $arg) { if (!\in_array($key, $callableArgs, \true)) { continue; } if (!$arg->value instanceof String_) { continue; } $node->args[$key] = new Arg(new FuncCall(new Name($arg->value->value), [new VariadicPlaceholder()]), \false, \false, [], $arg->name); $hasChanged = \true; } return $hasChanged ? $node : null; } public function provideMinPhpVersion() : int { return PhpVersion::PHP_81; } }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 8
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
ArraySpreadInsteadOfArrayMergeRector.php
5.67 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
CallUserFuncArrayToVariadicRector.php
3.52 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
CallUserFuncToMethodCallRector.php
2.37 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ConsistentImplodeRector.php
2.59 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
CountArrayToEmptyArrayComparisonRector.php
5.74 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
FunctionFirstClassCallableRector.php
2.99 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
StrictArraySearchRector.php
1.21 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
VersionCompareFuncCallToConstantRector.php
3.85 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).