[Renaming] Add RenameFuncCallToStaticCallRector

This commit is contained in:
TomasVotruba 2020-02-13 16:01:34 +01:00
parent 2a779b86c2
commit 42c5141d70
10 changed files with 194 additions and 229 deletions

View File

@ -135,7 +135,7 @@ parameters:
```yaml
services:
Rector\Rector\Architecture\DependencyInjection\AnnotatedPropertyInjectToConstructorInjectionRector:
Rector\Core\Rector\Architecture\DependencyInjection\AnnotatedPropertyInjectToConstructorInjectionRector
$annotation: "inject"
```
@ -312,7 +312,7 @@ use PhpParser\Node;
use PhpParser\Node\Identifier;
use PhpParser\Node\Expr\MethodCall;
use Rector\Core\Rector\AbstractRector;
use Rector\RectorDefinition\CodeSample;
use Rector\Core\RectorDefinition\CodeSample;
use Rector\Core\RectorDefinition\RectorDefinition;
final class MyFirstRector extends AbstractRector

View File

@ -1,4 +1,4 @@
# All 448 Rectors Overview
# All 449 Rectors Overview
- [Projects](#projects)
- [General](#general)
@ -7368,6 +7368,25 @@ Replace constant by new ones
<br>
### `RenameFuncCallToStaticCallRector`
- class: `Rector\Renaming\Rector\FuncCall\RenameFuncCallToStaticCallRector`
Rename func call to static call
```diff
class SomeClass
{
public function run()
{
- strPee('...');
+ \Strings::strPee('...');
}
}
```
<br>
### `RenameFunctionRector`
- class: `Rector\Renaming\Rector\Function_\RenameFunctionRector`

View File

@ -6,7 +6,7 @@ namespace Rector\_Package_\Rector\_Category_;
use PhpParser\Node;
use Rector\Core\Rector\AbstractRector;
use Rector\RectorDefinition\CodeSample;
use Rector\Core\RectorDefinition\CodeSample;
use Rector\Core\RectorDefinition\RectorDefinition;
/**

View File

@ -4,7 +4,7 @@ declare(strict_types=1);
namespace Rector\_Package_\Tests\Rector\_Category_\_Name_;
use Rector\Testing\PHPUnit\AbstractRectorTestCase;
use Rector\Core\Testing\PHPUnit\AbstractRectorTestCase;
final class _Name_ExtraTest extends AbstractRectorTestCase
{

View File

@ -4,7 +4,7 @@ declare(strict_types=1);
namespace Rector\_Package_\Tests\Rector\_Category_\_Name_;
use Rector\Testing\PHPUnit\AbstractRectorTestCase;
use Rector\Core\Testing\PHPUnit\AbstractRectorTestCase;
final class _Name_Test extends AbstractRectorTestCase
{

View File

@ -1,222 +0,0 @@
parameters:
exclude_paths:
- '/Fixture/'
- '/Source/'
- '/Expected/'
services:
Rector\Renaming\Rector\Class_\RenameClassRector:
$oldToNewClasses:
Rector\Contract\RectorDefinition\CodeSampleInterface: Rector\Core\Contract\RectorDefinition\CodeSampleInterface
Rector\Contract\Rector\PhpRectorInterface: Rector\Core\Contract\Rector\PhpRectorInterface
Rector\Core\Contract\Rector\RectorInterface: Rector\Core\Contract\Rector\RectorInterface
Rector\Contract\Exclusion\ExclusionCheckInterface: Rector\Core\Contract\Exclusion\ExclusionCheckInterface
Rector\Contract\Console\Output\OutputFormatterInterface: Rector\Core\Contract\Console\Output\OutputFormatterInterface
Rector\Contract\Extension\ReportingExtensionInterface: Rector\Core\Contract\Extension\ReportingExtensionInterface
Rector\Contract\Extension\FinishingExtensionInterface: Rector\Core\Contract\Extension\FinishingExtensionInterface
Rector\Contract\PhpParser\Node\CommanderInterface: Rector\Core\Contract\PhpParser\Node\CommanderInterface
Rector\Testing\StaticFixtureProvider: Rector\Core\Testing\StaticFixtureProvider
Rector\Testing\Finder\RectorsFinder: Rector\Core\Testing\Finder\RectorsFinder
Rector\Testing\PHPUnit\AbstractRectorTestCase: Rector\Core\Testing\PHPUnit\AbstractRectorTestCase
Rector\Testing\PHPUnit\PHPUnitEnvironment: Rector\Core\Testing\PHPUnit\PHPUnitEnvironment
Rector\Testing\PHPUnit\AbstractGenericRectorTestCase: Rector\Core\Testing\PHPUnit\AbstractGenericRectorTestCase
Rector\Testing\PHPUnit\AbstractNodeVisitorTestCase: Rector\Core\Testing\PHPUnit\AbstractNodeVisitorTestCase
Rector\Testing\PHPUnit\FixtureSplitter: Rector\Core\Testing\PHPUnit\FixtureSplitter
Rector\Testing\PHPUnit\AbstractFileSystemRectorTestCase: Rector\Core\Testing\PHPUnit\AbstractFileSystemRectorTestCase
Rector\Testing\Application\EnabledRectorsProvider: Rector\Core\Testing\Application\EnabledRectorsProvider
Rector\Exception\RectorDefinition\CodeSamplesMissingException: Rector\Core\Exception\RectorDefinition\CodeSamplesMissingException
Rector\Exception\Linter\LintingException: Rector\Core\Exception\Linter\LintingException
Rector\Exception\FileSystem\DirectoryNotFoundException: Rector\Core\Exception\FileSystem\DirectoryNotFoundException
Rector\Exception\FileSystem\FileNotFoundException: Rector\Core\Exception\FileSystem\FileNotFoundException
Rector\Exception\InvalidNodeTypeException: Rector\Core\Exception\InvalidNodeTypeException
Rector\Exception\Rector\RectorNotFoundOrNotValidRectorClassException: Rector\Core\Exception\Rector\RectorNotFoundOrNotValidRectorClassException
Rector\Exception\Rector\InvalidRectorConfigurationException: Rector\Core\Exception\Rector\InvalidRectorConfigurationException
Rector\Exception\Rector\InvalidRectorException: Rector\Core\Exception\Rector\InvalidRectorException
Rector\Exception\Validator\InvalidRectorClassException: Rector\Core\Exception\Validator\InvalidRectorClassException
Rector\Exception\Application\FileProcessingException: Rector\Core\Exception\Application\FileProcessingException
Rector\Exception\Bridge\RectorProviderException: Rector\Core\Exception\Bridge\RectorProviderException
Rector\Exception\NotImplementedYetException: Rector\Core\Exception\NotImplementedYetException
Rector\Exception\Console\Output\MissingOutputFormatterException: Rector\Core\Exception\Console\Output\MissingOutputFormatterException
Rector\Exception\Configuration\InvalidConfigurationTypeException: Rector\Core\Exception\Configuration\InvalidConfigurationTypeException
Rector\Exception\Configuration\InvalidConfigurationException: Rector\Core\Exception\Configuration\InvalidConfigurationException
Rector\Exception\NodeChanger\NodeMissingIdentifierException: Rector\Core\Exception\NodeChanger\NodeMissingIdentifierException
Rector\Exception\DependencyInjection\ClassNotFoundException: Rector\Core\Exception\DependencyInjection\ClassNotFoundException
Rector\Exception\ShouldBeImplementedException: Rector\Core\Exception\ShouldBeImplementedException
Rector\Exception\NotImplementedException: Rector\Core\Exception\NotImplementedException
Rector\Exception\NoRectorsLoadedException: Rector\Core\Exception\NoRectorsLoadedException
Rector\Exception\ShouldNotHappenException: Rector\Core\Exception\ShouldNotHappenException
Rector\Exception\Command\FileProcessingException: Rector\Core\Exception\Command\FileProcessingException
Rector\RectorDefinition\ConfiguredCodeSample: Rector\Core\RectorDefinition\ConfiguredCodeSample
Rector\Core\RectorDefinition\RectorDefinition: Rector\Core\RectorDefinition\RectorDefinition
Rector\RectorDefinition\CodeSample: Rector\Core\RectorDefinition\CodeSample
Rector\PHPStan\Reflection\CallReflectionResolver: Rector\Core\PHPStan\Reflection\CallReflectionResolver
Rector\PhpDoc\PhpDocClassRenamer: Rector\Core\PhpDoc\PhpDocClassRenamer
Rector\Util\RectorStrings: Rector\Core\Util\RectorStrings
Rector\HttpKernel\RectorKernel: Rector\Core\HttpKernel\RectorKernel
Rector\NodeContainer\FunctionLikeParsedNodesFinder: Rector\NodeCollector\NodeFinder\FunctionLikeParsedNodesFinder
Rector\NodeContainer\ClassLikeParsedNodesFinder: Rector\Core\NodeContainer\ClassLikeParsedNodesFinder
Rector\NodeContainer\ParsedNodesByType: Rector\Core\NodeContainer\NodeCollector\ParsedNodesByType
Rector\FileSystem\FileGuard: Rector\Core\FileSystem\FileGuard
Rector\FileSystem\FilesystemTweaker: Rector\Core\FileSystem\FilesystemTweaker
Rector\FileSystem\FilesFinder: Rector\Core\FileSystem\FilesFinder
Rector\FileSystem\ClassFinder: Rector\Core\FileSystem\ClassFinder
Rector\Rector\Assign\PropertyAssignToMethodCallRector: Rector\Core\Rector\Assign\PropertyAssignToMethodCallRector
Rector\Rector\Psr4\MultipleClassFileToPsr4ClassesRector: Rector\Core\Rector\Psr4\MultipleClassFileToPsr4ClassesRector
Rector\Rector\StaticCall\StaticCallToFunctionRector: Rector\Core\Rector\StaticCall\StaticCallToFunctionRector
Rector\Rector\StaticCall\SwapClassMethodArgumentsRector: Rector\Core\Rector\StaticCall\SwapClassMethodArgumentsRector
Rector\Rector\ClassMethod\WrapReturnRector: Rector\Core\Rector\ClassMethod\WrapReturnRector
Rector\Rector\ClassMethod\AddReturnTypeDeclarationRector: Rector\Core\Rector\ClassMethod\AddReturnTypeDeclarationRector
Rector\Rector\ClassMethod\AddMethodParentCallRector: Rector\Core\Rector\ClassMethod\AddMethodParentCallRector
Rector\Rector\MethodCall\MethodCallToAnotherMethodCallWithArgumentsRector: Rector\Core\Rector\MethodCall\MethodCallToAnotherMethodCallWithArgumentsRector
Rector\Rector\MethodCall\MethodCallToReturnRector: Rector\Core\Rector\MethodCall\MethodCallToReturnRector
Rector\Rector\MethodCall\ServiceGetterToConstructorInjectionRector: Rector\Core\Rector\MethodCall\ServiceGetterToConstructorInjectionRector
Rector\Core\Rector\AbstractRector: Rector\Core\Rector\AbstractRector
Rector\Core\Rector\AbstractRector\NodeFactoryTrait: Rector\Core\Rector\AbstractRector\NodeFactoryTrait
Rector\Core\Rector\AbstractRector\AppliedRectorCollectorTrait: Rector\Core\Rector\AbstractRector\AppliedRectorCollectorTrait
Rector\Core\Rector\AbstractRector\AbstractRectorTrait: Rector\Core\Rector\AbstractRector\AbstractRectorTrait
Rector\Core\Rector\AbstractRector\NodeCommandersTrait: Rector\Core\Rector\AbstractRector\NodeCommandersTrait
Rector\Core\Rector\AbstractRector\ComplexRemovalTrait: Rector\Core\Rector\AbstractRector\ComplexRemovalTrait
Rector\Core\Rector\AbstractRector\NodeTypeResolverTrait: Rector\Core\Rector\AbstractRector\NodeTypeResolverTrait
Rector\Core\Rector\AbstractRector\NameResolverTrait: Rector\Core\Rector\AbstractRector\NameResolverTrait
Rector\Core\Rector\AbstractRector\CallableNodeTraverserTrait: Rector\Core\Rector\AbstractRector\CallableNodeTraverserTrait
Rector\Core\Rector\AbstractRector\ConstFetchAnalyzerTrait: Rector\Core\Rector\AbstractRector\ConstFetchAnalyzerTrait
Rector\Core\Rector\AbstractRector\VisibilityTrait: Rector\Core\Rector\AbstractRector\VisibilityTrait
Rector\Core\Rector\AbstractRector\ValueResolverTrait: Rector\Core\Rector\AbstractRector\ValueResolverTrait
Rector\Core\Rector\AbstractRector\BetterStandardPrinterTrait: Rector\Core\Rector\AbstractRector\BetterStandardPrinterTrait
Rector\Rector\MethodBody\FluentReplaceRector: Rector\Core\Rector\MethodBody\FluentReplaceRector
Rector\Rector\MethodBody\NormalToFluentRector: Rector\Core\Rector\MethodBody\NormalToFluentRector
Rector\Rector\MethodBody\ReturnThisRemoveRector: Rector\Core\Rector\MethodBody\ReturnThisRemoveRector
Rector\Rector\MagicDisclosure\ToStringToMethodCallRector: Rector\Core\Rector\MagicDisclosure\ToStringToMethodCallRector
Rector\Rector\MagicDisclosure\GetAndSetToMethodCallRector: Rector\Core\Rector\MagicDisclosure\GetAndSetToMethodCallRector
Rector\Rector\MagicDisclosure\UnsetAndIssetToMethodCallRector: Rector\Core\Rector\MagicDisclosure\UnsetAndIssetToMethodCallRector
Rector\Rector\AbstractPHPUnitRector: Rector\Core\Rector\AbstractPHPUnitRector
Rector\Rector\String_\StringToClassConstantRector: Rector\Core\Rector\String_\StringToClassConstantRector
Rector\Rector\AffectedFilesCollector: Rector\Core\Rector\AffectedFilesCollector
Rector\Rector\Argument\ArgumentAdderRector: Rector\Core\Rector\Argument\ArgumentAdderRector
Rector\Rector\Argument\ArgumentRemoverRector: Rector\Core\Rector\Argument\ArgumentRemoverRector
Rector\Rector\Argument\ArgumentDefaultValueReplacerRector: Rector\Core\Rector\Argument\ArgumentDefaultValueReplacerRector
Rector\Rector\Argument\SwapFuncCallArgumentsRector: Rector\Core\Rector\Argument\SwapFuncCallArgumentsRector
Rector\Rector\New_\NewToStaticCallRector: Rector\Core\Rector\New_\NewToStaticCallRector
Rector\Rector\Namespace_\PseudoNamespaceToNamespaceRector: Rector\Core\Rector\Namespace_\PseudoNamespaceToNamespaceRector
Rector\Rector\Function_\FunctionToMethodCallRector: Rector\Core\Rector\Function_\FunctionToMethodCallRector
Rector\Rector\Function_\FunctionToStaticCallRector: Rector\Core\Rector\Function_\FunctionToStaticCallRector
Rector\Rector\Property\PropertyToMethodRector: Rector\Core\Rector\Property\PropertyToMethodRector
Rector\Rector\Property\InjectAnnotationClassRector: Rector\Core\Rector\Property\InjectAnnotationClassRector
Rector\Rector\Property\RenamePropertyRector: Rector\Core\Rector\Property\RenamePropertyRector
Rector\Rector\Architecture\DependencyInjection\AnnotatedPropertyInjectToConstructorInjectionRector: Rector\Core\Rector\Architecture\DependencyInjection\AnnotatedPropertyInjectToConstructorInjectionRector
Rector\Rector\Architecture\DependencyInjection\ReplaceVariableByPropertyFetchRector: Rector\Core\Rector\Architecture\DependencyInjection\ReplaceVariableByPropertyFetchRector
Rector\Rector\Architecture\DependencyInjection\ActionInjectionToConstructorInjectionRector: Rector\Core\Rector\Architecture\DependencyInjection\ActionInjectionToConstructorInjectionRector
Rector\Rector\Architecture\Factory\NewObjectToFactoryCreateRector: Rector\Core\Rector\Architecture\Factory\NewObjectToFactoryCreateRector
Rector\Rector\Architecture\RepositoryAsService\ReplaceParentRepositoryCallsByRepositoryPropertyRector: Rector\Core\Rector\Architecture\RepositoryAsService\ReplaceParentRepositoryCallsByRepositoryPropertyRector
Rector\Rector\Architecture\RepositoryAsService\ServiceLocatorToDIRector: Rector\Core\Rector\Architecture\RepositoryAsService\ServiceLocatorToDIRector
Rector\Rector\Architecture\RepositoryAsService\MoveRepositoryFromParentToConstructorRector: Rector\Core\Rector\Architecture\RepositoryAsService\MoveRepositoryFromParentToConstructorRector
Rector\Rector\FuncCall\FunctionToNewRector: Rector\Core\Rector\FuncCall\FunctionToNewRector
Rector\Rector\ClassLike\RemoveTraitRector: Rector\Core\Rector\ClassLike\RemoveTraitRector
Rector\Rector\Interface_\RemoveInterfacesRector: Rector\Core\Rector\Interface_\RemoveInterfacesRector
Rector\Rector\Interface_\MergeInterfacesRector: Rector\Core\Rector\Interface_\MergeInterfacesRector
Rector\Rector\Visibility\ChangeMethodVisibilityRector: Rector\Core\Rector\Visibility\ChangeMethodVisibilityRector
Rector\Rector\Visibility\ChangePropertyVisibilityRector: Rector\Core\Rector\Visibility\ChangePropertyVisibilityRector
Rector\Rector\Visibility\ChangeConstantVisibilityRector: Rector\Core\Rector\Visibility\ChangeConstantVisibilityRector
Rector\Rector\Constant\RenameClassConstantsUseToStringsRector: Rector\Core\Rector\Constant\RenameClassConstantsUseToStringsRector
Rector\Rector\Class_\AddInterfaceByTraitRector: Rector\Core\Rector\Class_\AddInterfaceByTraitRector
Rector\Rector\Class_\ParentClassToTraitsRector: Rector\Core\Rector\Class_\ParentClassToTraitsRector
Rector\Stubs\StubLoader: Rector\Core\Stubs\StubLoader
Rector\Application\AppliedRectorCollector: Rector\Core\Application\AppliedRectorCollector
Rector\Application\FileSystem\RemovedAndAddedFilesCollector: Rector\Core\Application\FileSystem\RemovedAndAddedFilesCollector
Rector\Application\FileSystem\RemovedAndAddedFilesProcessor: Rector\Core\Application\FileSystem\RemovedAndAddedFilesProcessor
Rector\Application\FileProcessor: Rector\Core\Application\FileProcessor
Rector\Application\ErrorAndDiffCollector: Rector\Core\Application\ErrorAndDiffCollector
Rector\Application\RectorApplication: Rector\Core\Application\RectorApplication
Rector\Autoloading\AdditionalAutoloader: Rector\Core\Autoloading\AdditionalAutoloader
Rector\Exclusion\Check\ExcludeByDocBlockExclusionCheck: Rector\Core\Exclusion\Check\ExcludeByDocBlockExclusionCheck
Rector\Exclusion\ExclusionManager: Rector\Core\Exclusion\ExclusionManager
Rector\Console\Output\JsonOutputFormatter: Rector\Core\Console\Output\JsonOutputFormatter
Rector\Console\Output\ConsoleOutputFormatter: Rector\Core\Console\Output\ConsoleOutputFormatter
Rector\Console\Output\OutputFormatterCollector: Rector\Core\Console\Output\OutputFormatterCollector
Rector\Console\Application: Rector\Core\Console\Application
Rector\Console\Style\SymfonyStyleFactory: Rector\Core\Console\Style\SymfonyStyleFactory
Rector\Console\Shell: Rector\Core\Console\Shell
Rector\Console\Command\ScanFatalErrorsCommand: Rector\Core\Console\Command\ScanFatalErrorsCommand
Rector\Console\Command\ShowCommand: Rector\Core\Console\Command\ShowCommand
Rector\Console\Command\ScanClassesCommand: Rector\Core\Console\Command\ScanClassesCommand
Rector\Console\Command\AbstractCommand: Rector\Core\Console\Command\AbstractCommand
Rector\Console\Command\ProcessCommand: Rector\Core\Console\Command\ProcessCommand
Rector\Console\Command\ScreenFileCommand: Rector\Core\Console\Command\ScreenFileCommand
Rector\Console\Command\SetsCommand: Rector\Core\Console\Command\SetsCommand
Rector\Guard\RectorGuard: Rector\Core\Guard\RectorGuard
Rector\Error\ExceptionCorrector: Rector\Core\Error\ExceptionCorrector
Rector\Standalone\RectorStandaloneRunner: Rector\Core\Standalone\RectorStandaloneRunner
Rector\Standalone\RectorStandaloneRunnerStaticFactory: Rector\Core\Standalone\RectorStandaloneRunnerStaticFactory
Rector\Scan\ErrorScanner: Rector\Core\Scan\ErrorScanner
Rector\Scan\ScannedErrorToRectorResolver: Rector\Core\Scan\ScannedErrorToRectorResolver
Rector\ValueObject\RenamedNamespaceValueObject: Rector\Core\ValueObject\RenamedNamespaceValueObject
Rector\ValueObject\Application\Error: Rector\Core\ValueObject\Application\Error
Rector\ValueObject\Scan\ClassMethodWithArguments: Rector\Core\ValueObject\Scan\ClassMethodWithArguments
Rector\ValueObject\Scan\Argument: Rector\Core\ValueObject\Scan\Argument
Rector\ValueObject\MovedClassValueObject: Rector\Core\ValueObject\MovedClassValueObject
Rector\ValueObject\Reporting\FileDiff: Rector\Core\ValueObject\Reporting\FileDiff
Rector\ValueObject\PhpVersionFeature: Rector\Core\ValueObject\PhpVersionFeature
Rector\Configuration\Rector\Architecture\DependencyInjection\VariablesToPropertyFetchCollection: Rector\Core\Configuration\Rector\Architecture\DependencyInjection\VariablesToPropertyFetchCollection
Rector\Configuration\CurrentNodeProvider: Rector\Core\Configuration\CurrentNodeProvider
Rector\Configuration\Option: Rector\Core\Configuration\Option
Rector\Configuration\Configuration: Rector\Core\Configuration\Configuration
Rector\Extension\FinishingExtensionRunner: Rector\Core\Extension\FinishingExtensionRunner
Rector\Extension\ReportingExtensionRunner: Rector\Core\Extension\ReportingExtensionRunner
Rector\Yaml\YamlPrinter: Rector\Core\Yaml\YamlPrinter
Rector\EventDispatcher\AutowiredEventDispatcher: Rector\Core\EventDispatcher\AutowiredEventDispatcher
Rector\DependencyInjection\Loader\ClassExistenceValidator: Rector\Core\DependencyInjection\Loader\ClassExistenceValidator
Rector\DependencyInjection\Loader\TolerantRectorYamlFileLoader: Rector\Core\DependencyInjection\Loader\TolerantRectorYamlFileLoader
Rector\DependencyInjection\Collector\RectorServiceArgumentCollector: Rector\Core\DependencyInjection\Collector\RectorServiceArgumentCollector
Rector\DependencyInjection\CompilerPass\MergeImportedRectorServiceArgumentsCompilerPass: Rector\Core\DependencyInjection\CompilerPass\MergeImportedRectorServiceArgumentsCompilerPass
Rector\DependencyInjection\CompilerPass\RemoveExcludedRectorsCompilerPass: Rector\Core\DependencyInjection\CompilerPass\RemoveExcludedRectorsCompilerPass
Rector\DependencyInjection\RectorContainerFactory: Rector\Core\DependencyInjection\RectorContainerFactory
Rector\Set\SetProvider: Rector\Core\Set\SetProvider
Rector\Set\Set: Rector\Core\Set\Set
Rector\Naming\NamespaceMatcher: Rector\Core\Naming\NamespaceMatcher
Rector\Naming\PropertyNaming: Rector\Core\Naming\PropertyNaming
Rector\Commander\CommanderCollector: Rector\Core\Commander\CommanderCollector
Rector\BetterPhpDocParser\Utils\ArrayItemStaticHelper: Rector\Core\BetterPhpDocParser\Utils\ArrayItemStaticHelper
Rector\Reflection\ClassMethodReflectionFactory: Rector\Core\Reflection\ClassMethodReflectionFactory
Rector\PhpParser\NodeTransformer: Rector\Core\PhpParser\NodeTransformer
Rector\PhpParser\Node\Resolver\NameResolver: Rector\Core\PhpParser\Node\Resolver\NameResolver
Rector\PhpParser\Node\BetterNodeFinder: Rector\Core\PhpParser\Node\BetterNodeFinder
Rector\PhpParser\Node\AssignAndBinaryMap: Rector\Core\PhpParser\Node\AssignAndBinaryMap
Rector\PhpParser\Node\Manipulator\PropertyFetchManipulator: Rector\Core\PhpParser\Node\Manipulator\PropertyFetchManipulator
Rector\PhpParser\Node\Manipulator\BinaryOpManipulator: Rector\Core\PhpParser\Node\Manipulator\BinaryOpManipulator
Rector\PhpParser\Node\Manipulator\ClassConstManipulator: Rector\Core\PhpParser\Node\Manipulator\ClassConstManipulator
Rector\PhpParser\Node\Manipulator\ForeachManipulator: Rector\Core\PhpParser\Node\Manipulator\ForeachManipulator
Rector\PhpParser\Node\Manipulator\StmtsManipulator: Rector\Core\PhpParser\Node\Manipulator\StmtsManipulator
Rector\PhpParser\Node\Manipulator\IfManipulator: Rector\Core\PhpParser\Node\Manipulator\IfManipulator
Rector\PhpParser\Node\Manipulator\ClassMethodManipulator: Rector\Core\PhpParser\Node\Manipulator\ClassMethodManipulator
Rector\PhpParser\Node\Manipulator\AssignManipulator: Rector\Core\PhpParser\Node\Manipulator\AssignManipulator
Rector\PhpParser\Node\Manipulator\IdentifierManipulator: Rector\Core\PhpParser\Node\Manipulator\IdentifierManipulator
Rector\PhpParser\Node\Manipulator\ChainMethodCallManipulator: Rector\Core\PhpParser\Node\Manipulator\ChainMethodCallManipulator
Rector\PhpParser\Node\Manipulator\FunctionLikeManipulator: Rector\Core\PhpParser\Node\Manipulator\FunctionLikeManipulator
Rector\PhpParser\Node\Manipulator\ConstFetchManipulator: Rector\Core\PhpParser\Node\Manipulator\ConstFetchManipulator
Rector\PhpParser\Node\Manipulator\ChildAndParentClassManipulator: Rector\Core\PhpParser\Node\Manipulator\ChildAndParentClassManipulator
Rector\PhpParser\Node\Manipulator\ClassManipulator: Rector\Core\PhpParser\Node\Manipulator\ClassManipulator
Rector\PhpParser\Node\Manipulator\PropertyManipulator: Rector\Core\PhpParser\Node\Manipulator\PropertyManipulator
Rector\PhpParser\Node\Manipulator\ArrayManipulator: Rector\Core\PhpParser\Node\Manipulator\ArrayManipulator
Rector\PhpParser\Node\Manipulator\VisibilityManipulator: Rector\Core\PhpParser\Node\Manipulator\VisibilityManipulator
Rector\PhpParser\Node\Manipulator\MethodCallManipulator: Rector\Core\PhpParser\Node\Manipulator\MethodCallManipulator
Rector\PhpParser\Node\Commander\PropertyAddingCommander: Rector\Core\PhpParser\Node\Commander\PropertyAddingCommander
Rector\PhpParser\Node\Commander\NodeReplacingCommander: Rector\Core\PhpParser\Node\Commander\NodeReplacingCommander
Rector\PhpParser\Node\Commander\NodeRemovingCommander: Rector\Core\PhpParser\Node\Commander\NodeRemovingCommander
Rector\PhpParser\Node\Commander\NodeAddingCommander: Rector\Core\PhpParser\Node\Commander\NodeAddingCommander
Rector\PhpParser\Node\NodeVisitor\NodeRemovingNodeVisitor: Rector\Core\PhpParser\Node\NodeVisitor\NodeRemovingNodeVisitor
Rector\PhpParser\Node\NodeVisitorFactory\NodeRemovingNodeVisitorFactory: Rector\Core\PhpParser\Node\NodeVisitorFactory\NodeRemovingNodeVisitorFactory
Rector\PhpParser\Node\NodeFactory: Rector\Core\PhpParser\Node\NodeFactory
Rector\PhpParser\Node\Value\ValueResolver: Rector\Core\PhpParser\Node\Value\ValueResolver
Rector\PhpParser\NodeTraverser\CallableNodeTraverser: Rector\Core\PhpParser\NodeTraverser\CallableNodeTraverser
Rector\PhpParser\NodeTraverser\RectorNodeTraverser: Rector\Core\PhpParser\NodeTraverser\RectorNodeTraverser
Rector\PhpParser\Printer\BetterStandardPrinter: Rector\Core\PhpParser\Printer\BetterStandardPrinter
Rector\PhpParser\Printer\FormatPerservingPrinter: Rector\Core\PhpParser\Printer\FormatPerservingPrinter
Rector\PhpParser\Parser\InlineCodeParser: Rector\Core\PhpParser\Parser\InlineCodeParser
Rector\PhpParser\Parser\ParserFactory: Rector\Core\PhpParser\Parser\ParserFactory
Rector\PhpParser\Parser\LexerFactory: Rector\Core\PhpParser\Parser\LexerFactory
Rector\PhpParser\Parser\Parser: Rector\Core\PhpParser\Parser\Parser
Rector\PhpParser\BetterNodeDumper: Rector\Core\PhpParser\BetterNodeDumper
Rector\Context\ContextAnalyzer: Rector\Core\Context\ContextAnalyzer
Rector\Php\Regex\RegexPatternArgumentManipulator: Rector\Core\Php\Regex\RegexPatternArgumentManipulator
Rector\Php\PhpVersionProvider: Rector\Core\Php\PhpVersionProvider
Rector\Php\TypeAnalyzer: Rector\Core\Php\TypeAnalyzer

View File

@ -10,7 +10,7 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PhpParser\Node\Manipulator\IfManipulator;
use Rector\PhpParser\Node\Manipulator\StmtsManipulator;
use Rector\Core\Rector\AbstractRector;
use Rector\RectorDefinition\CodeSample;
use Rector\Core\RectorDefinition\CodeSample;
use Rector\Core\RectorDefinition\RectorDefinition;
/**

View File

@ -0,0 +1,105 @@
<?php
declare(strict_types=1);
namespace Rector\Renaming\Rector\FuncCall;
use PhpParser\Node;
use PhpParser\Node\Expr\FuncCall;
use Rector\Core\Exception\Configuration\InvalidConfigurationException;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\RectorDefinition\CodeSample;
use Rector\Core\RectorDefinition\RectorDefinition;
/**
* @see \Rector\Renaming\Tests\Rector\FuncCall\RenameFuncCallToStaticCallRector\RenameFuncCallToStaticCallRectorTest
*/
final class RenameFuncCallToStaticCallRector extends AbstractRector
{
/**
* @var string[][]
*/
private $functionsToStaticCalls = [];
public function __construct(array $functionsToStaticCalls = [])
{
$this->functionsToStaticCalls = $functionsToStaticCalls;
$this->ensureConfigurationIsValid($functionsToStaticCalls);
}
public function getDefinition(): RectorDefinition
{
return new RectorDefinition('Rename func call to static call', [
new CodeSample(
<<<'PHP'
class SomeClass
{
public function run()
{
strPee('...');
}
}
PHP
,
<<<'PHP'
class SomeClass
{
public function run()
{
\Strings::strPee('...');
}
}
PHP
),
]);
}
/**
* @return string[]
*/
public function getNodeTypes(): array
{
return [FuncCall::class];
}
/**
* @param FuncCall $node
*/
public function refactor(Node $node): ?Node
{
foreach ($this->functionsToStaticCalls as $function => $staticCall) {
if (! $this->isName($node, $function)) {
continue;
}
$staticCall = $this->createStaticCall($staticCall[0], $staticCall[1]);
$staticCall->args = $node->args;
return $staticCall;
}
return null;
}
private function ensureConfigurationIsValid(array $functionsToStaticCalls): void
{
foreach ($functionsToStaticCalls as $function => $staticCall) {
if (! is_string($function)) {
throw new InvalidConfigurationException();
}
if (count($staticCall) !== 2) {
throw new InvalidConfigurationException();
}
if (! is_string($staticCall[0])) {
throw new InvalidConfigurationException();
}
if (! is_string($staticCall[1])) {
throw new InvalidConfigurationException();
}
}
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace Rector\Renaming\Tests\Rector\FuncCall\RenameFuncCallToStaticCallRector\Fixture;
class SomeClass
{
public function run()
{
strPee('...');
}
}
?>
-----
<?php
namespace Rector\Renaming\Tests\Rector\FuncCall\RenameFuncCallToStaticCallRector\Fixture;
class SomeClass
{
public function run()
{
\Strings::strPaa('...');
}
}
?>

View File

@ -0,0 +1,36 @@
<?php
declare(strict_types=1);
namespace Rector\Renaming\Tests\Rector\FuncCall\RenameFuncCallToStaticCallRector;
use Iterator;
use Rector\Core\Testing\PHPUnit\AbstractRectorTestCase;
use Rector\Renaming\Rector\FuncCall\RenameFuncCallToStaticCallRector;
final class RenameFuncCallToStaticCallRectorTest extends AbstractRectorTestCase
{
/**
* @dataProvider provideData()
*/
public function test(string $file): void
{
$this->doTestFile($file);
}
public function provideData(): Iterator
{
return $this->yieldFilesFromDirectory(__DIR__ . '/Fixture');
}
protected function getRectorsWithConfiguration(): array
{
return [
RenameFuncCallToStaticCallRector::class => [
'$functionsToStaticCalls' => [
'strPee' => ['Strings', 'strPaa'],
],
],
];
}
}