mirror of
https://github.com/rectorphp/rector.git
synced 2024-05-30 16:00:52 +00:00
Updated Rector to commit 92d04a5547
92d04a5547
Deprecate RemovingStatic rules as very narrow use case in generic rules (#1819)
This commit is contained in:
parent
7d7b002e7c
commit
d0d361080e
|
@ -3,16 +3,13 @@
|
|||
declare (strict_types=1);
|
||||
namespace RectorPrefix20220215;
|
||||
|
||||
use Rector\Core\Configuration\Option;
|
||||
use Rector\PSR4\Composer\PSR4NamespaceMatcher;
|
||||
use Rector\PSR4\Contract\PSR4AutoloadNamespaceMatcherInterface;
|
||||
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
|
||||
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
|
||||
$parameters = $containerConfigurator->parameters();
|
||||
$parameters->set(\Rector\Core\Configuration\Option::TYPES_TO_REMOVE_STATIC_FROM, []);
|
||||
$services = $containerConfigurator->services();
|
||||
$services->defaults()->public()->autowire()->autoconfigure();
|
||||
// psr-4
|
||||
$services->alias(\Rector\PSR4\Contract\PSR4AutoloadNamespaceMatcherInterface::class, \Rector\PSR4\Composer\PSR4NamespaceMatcher::class);
|
||||
$services->load('Rector\\', __DIR__ . '/../rules')->exclude([__DIR__ . '/../rules/*/{ValueObject,Rector,Contract,Exception,Enum}']);
|
||||
$services->load('Rector\\', __DIR__ . '/../rules')->exclude([__DIR__ . '/../rules/*/ValueObject/*', __DIR__ . '/../rules/*/Rector/*', __DIR__ . '/../rules/*/Contract/*', __DIR__ . '/../rules/*/Exception/*', __DIR__ . '/../rules/*/Enum/*']);
|
||||
};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# 524 Rules Overview
|
||||
# 520 Rules Overview
|
||||
|
||||
<br>
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
|||
|
||||
- [Autodiscovery](#autodiscovery) (4)
|
||||
|
||||
- [CodeQuality](#codequality) (70)
|
||||
- [CodeQuality](#codequality) (71)
|
||||
|
||||
- [CodingStyle](#codingstyle) (35)
|
||||
|
||||
|
@ -76,7 +76,7 @@
|
|||
|
||||
- [Php74](#php74) (15)
|
||||
|
||||
- [Php80](#php80) (18)
|
||||
- [Php80](#php80) (17)
|
||||
|
||||
- [Php81](#php81) (9)
|
||||
|
||||
|
@ -88,7 +88,7 @@
|
|||
|
||||
- [Removing](#removing) (6)
|
||||
|
||||
- [RemovingStatic](#removingstatic) (5)
|
||||
- [RemovingStatic](#removingstatic) (1)
|
||||
|
||||
- [Renaming](#renaming) (11)
|
||||
|
||||
|
@ -1127,6 +1127,24 @@ Change unsafe new `static()` to new `self()`
|
|||
|
||||
<br>
|
||||
|
||||
### OptionalParametersAfterRequiredRector
|
||||
|
||||
Move required parameters after optional ones
|
||||
|
||||
- class: [`Rector\CodeQuality\Rector\ClassMethod\OptionalParametersAfterRequiredRector`](../rules/CodeQuality/Rector/ClassMethod/OptionalParametersAfterRequiredRector.php)
|
||||
|
||||
```diff
|
||||
class SomeObject
|
||||
{
|
||||
- public function run($optional = 1, $required)
|
||||
+ public function run($required, $optional = 1)
|
||||
{
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
<br>
|
||||
|
||||
### RemoveAlwaysTrueConditionSetInConstructorRector
|
||||
|
||||
If conditions is always true, perform the content right away
|
||||
|
@ -8350,24 +8368,6 @@ Change ternary type resolve to `get_debug_type()`
|
|||
|
||||
<br>
|
||||
|
||||
### OptionalParametersAfterRequiredRector
|
||||
|
||||
Move required parameters after optional ones
|
||||
|
||||
- class: [`Rector\Php80\Rector\ClassMethod\OptionalParametersAfterRequiredRector`](../rules/Php80/Rector/ClassMethod/OptionalParametersAfterRequiredRector.php)
|
||||
|
||||
```diff
|
||||
class SomeObject
|
||||
{
|
||||
- public function run($optional = 1, $required)
|
||||
+ public function run($required, $optional = 1)
|
||||
{
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
<br>
|
||||
|
||||
### Php8ResourceReturnToObjectRector
|
||||
|
||||
Change `is_resource()` to instanceof Object
|
||||
|
@ -9566,108 +9566,6 @@ return static function (ContainerConfigurator $containerConfigurator): void {
|
|||
|
||||
## RemovingStatic
|
||||
|
||||
### DesiredClassTypeToDynamicRector
|
||||
|
||||
Change full static service, to dynamic one
|
||||
|
||||
- class: [`Rector\RemovingStatic\Rector\Class_\DesiredClassTypeToDynamicRector`](../rules/RemovingStatic/Rector/Class_/DesiredClassTypeToDynamicRector.php)
|
||||
|
||||
```diff
|
||||
class AnotherClass
|
||||
{
|
||||
+ /**
|
||||
+ * @var SomeClass
|
||||
+ */
|
||||
+ private $someClass;
|
||||
+
|
||||
+ public fuction __construct(SomeClass $someClass)
|
||||
+ {
|
||||
+ $this->someClass = $someClass;
|
||||
+ }
|
||||
+
|
||||
public function run()
|
||||
{
|
||||
SomeClass::someStatic();
|
||||
}
|
||||
}
|
||||
|
||||
class SomeClass
|
||||
{
|
||||
- public static function run()
|
||||
+ public function run()
|
||||
{
|
||||
- self::someStatic();
|
||||
+ $this->someStatic();
|
||||
}
|
||||
|
||||
- private static function someStatic()
|
||||
+ private function someStatic()
|
||||
{
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
<br>
|
||||
|
||||
### DesiredPropertyClassMethodTypeToDynamicRector
|
||||
|
||||
Change defined static properties and methods to dynamic
|
||||
|
||||
- class: [`Rector\RemovingStatic\Rector\Property\DesiredPropertyClassMethodTypeToDynamicRector`](../rules/RemovingStatic/Rector/Property/DesiredPropertyClassMethodTypeToDynamicRector.php)
|
||||
|
||||
```diff
|
||||
final class SomeClass
|
||||
{
|
||||
- public static $name;
|
||||
+ public $name;
|
||||
|
||||
- public static function go()
|
||||
+ public function go()
|
||||
{
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
<br>
|
||||
|
||||
### DesiredStaticCallTypeToDynamicRector
|
||||
|
||||
Change defined static service to dynamic one
|
||||
|
||||
- class: [`Rector\RemovingStatic\Rector\StaticCall\DesiredStaticCallTypeToDynamicRector`](../rules/RemovingStatic/Rector/StaticCall/DesiredStaticCallTypeToDynamicRector.php)
|
||||
|
||||
```diff
|
||||
final class SomeClass
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
- SomeStaticMethod::someStatic();
|
||||
+ $this->someStaticMethod->someStatic();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
<br>
|
||||
|
||||
### DesiredStaticPropertyFetchTypeToDynamicRector
|
||||
|
||||
Change defined static service to dynamic one
|
||||
|
||||
- class: [`Rector\RemovingStatic\Rector\StaticPropertyFetch\DesiredStaticPropertyFetchTypeToDynamicRector`](../rules/RemovingStatic/Rector/StaticPropertyFetch/DesiredStaticPropertyFetchTypeToDynamicRector.php)
|
||||
|
||||
```diff
|
||||
final class SomeClass
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
- SomeStaticMethod::$someStatic;
|
||||
+ $this->someStaticMethod->someStatic;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
<br>
|
||||
|
||||
### LocallyCalledStaticMethodToNonStaticRector
|
||||
|
||||
Change static method and local-only calls to non-static
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
namespace Rector\RemovingStatic\NodeAnalyzer;
|
||||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Expr\StaticCall;
|
||||
use PhpParser\Node\Stmt\Class_;
|
||||
use PhpParser\Node\Stmt\ClassMethod;
|
||||
use PHPStan\Type\ObjectType;
|
||||
use Rector\Core\PhpParser\Node\BetterNodeFinder;
|
||||
use Rector\Core\ValueObject\MethodName;
|
||||
use Rector\NodeTypeResolver\NodeTypeResolver;
|
||||
final class StaticCallPresenceAnalyzer
|
||||
{
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||
*/
|
||||
private $betterNodeFinder;
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||
*/
|
||||
private $nodeTypeResolver;
|
||||
public function __construct(\Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\NodeTypeResolver\NodeTypeResolver $nodeTypeResolver)
|
||||
{
|
||||
$this->betterNodeFinder = $betterNodeFinder;
|
||||
$this->nodeTypeResolver = $nodeTypeResolver;
|
||||
}
|
||||
public function hasMethodStaticCallOnType(\PhpParser\Node\Stmt\ClassMethod $classMethod, \PHPStan\Type\ObjectType $objectType) : bool
|
||||
{
|
||||
return (bool) $this->betterNodeFinder->findFirst((array) $classMethod->stmts, function (\PhpParser\Node $node) use($objectType) : bool {
|
||||
if (!$node instanceof \PhpParser\Node\Expr\StaticCall) {
|
||||
return \false;
|
||||
}
|
||||
return $this->nodeTypeResolver->isObjectType($node->class, $objectType);
|
||||
});
|
||||
}
|
||||
public function hasClassAnyMethodWithStaticCallOnType(\PhpParser\Node\Stmt\Class_ $class, \PHPStan\Type\ObjectType $objectType) : bool
|
||||
{
|
||||
foreach ($class->getMethods() as $classMethod) {
|
||||
// handled else where
|
||||
if ((string) $classMethod->name === \Rector\Core\ValueObject\MethodName::CONSTRUCT) {
|
||||
continue;
|
||||
}
|
||||
if ($this->hasMethodStaticCallOnType($classMethod, $objectType)) {
|
||||
return \true;
|
||||
}
|
||||
}
|
||||
return \false;
|
||||
}
|
||||
}
|
|
@ -1,172 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
namespace Rector\RemovingStatic\Rector\Class_;
|
||||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Expr\Variable;
|
||||
use PhpParser\Node\Name\FullyQualified;
|
||||
use PhpParser\Node\Param;
|
||||
use PhpParser\Node\Stmt\Class_;
|
||||
use PhpParser\Node\Stmt\ClassMethod;
|
||||
use PHPStan\Type\ObjectType;
|
||||
use Rector\Core\Configuration\Option;
|
||||
use Rector\Core\Rector\AbstractRector;
|
||||
use Rector\Core\ValueObject\MethodName;
|
||||
use Rector\Naming\Naming\PropertyNaming;
|
||||
use Rector\PostRector\Collector\PropertyToAddCollector;
|
||||
use Rector\PostRector\ValueObject\PropertyMetadata;
|
||||
use Rector\RemovingStatic\NodeAnalyzer\StaticCallPresenceAnalyzer;
|
||||
use RectorPrefix20220215\Symplify\PackageBuilder\Parameter\ParameterProvider;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
/**
|
||||
* @see \Rector\Tests\RemovingStatic\Rector\Class_\DesiredClassTypeToDynamicRector\DesiredClassTypeToDynamicRectorTest
|
||||
*/
|
||||
final class DesiredClassTypeToDynamicRector extends \Rector\Core\Rector\AbstractRector
|
||||
{
|
||||
/**
|
||||
* @var ObjectType[]
|
||||
*/
|
||||
private $staticObjectTypes = [];
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\Naming\Naming\PropertyNaming
|
||||
*/
|
||||
private $propertyNaming;
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\RemovingStatic\NodeAnalyzer\StaticCallPresenceAnalyzer
|
||||
*/
|
||||
private $staticCallPresenceAnalyzer;
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\PostRector\Collector\PropertyToAddCollector
|
||||
*/
|
||||
private $propertyToAddCollector;
|
||||
public function __construct(\Rector\Naming\Naming\PropertyNaming $propertyNaming, \Rector\RemovingStatic\NodeAnalyzer\StaticCallPresenceAnalyzer $staticCallPresenceAnalyzer, \Rector\PostRector\Collector\PropertyToAddCollector $propertyToAddCollector, \RectorPrefix20220215\Symplify\PackageBuilder\Parameter\ParameterProvider $parameterProvider)
|
||||
{
|
||||
$this->propertyNaming = $propertyNaming;
|
||||
$this->staticCallPresenceAnalyzer = $staticCallPresenceAnalyzer;
|
||||
$this->propertyToAddCollector = $propertyToAddCollector;
|
||||
$typesToRemoveStaticFrom = $parameterProvider->provideArrayParameter(\Rector\Core\Configuration\Option::TYPES_TO_REMOVE_STATIC_FROM);
|
||||
foreach ($typesToRemoveStaticFrom as $typeToRemoveStaticFrom) {
|
||||
$this->staticObjectTypes[] = new \PHPStan\Type\ObjectType($typeToRemoveStaticFrom);
|
||||
}
|
||||
}
|
||||
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
|
||||
{
|
||||
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Change full static service, to dynamic one', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
|
||||
class AnotherClass
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
SomeClass::someStatic();
|
||||
}
|
||||
}
|
||||
|
||||
class SomeClass
|
||||
{
|
||||
public static function run()
|
||||
{
|
||||
self::someStatic();
|
||||
}
|
||||
|
||||
private static function someStatic()
|
||||
{
|
||||
}
|
||||
}
|
||||
CODE_SAMPLE
|
||||
, <<<'CODE_SAMPLE'
|
||||
class AnotherClass
|
||||
{
|
||||
/**
|
||||
* @var SomeClass
|
||||
*/
|
||||
private $someClass;
|
||||
|
||||
public fuction __construct(SomeClass $someClass)
|
||||
{
|
||||
$this->someClass = $someClass;
|
||||
}
|
||||
|
||||
public function run()
|
||||
{
|
||||
SomeClass::someStatic();
|
||||
}
|
||||
}
|
||||
|
||||
class SomeClass
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
$this->someStatic();
|
||||
}
|
||||
|
||||
private function someStatic()
|
||||
{
|
||||
}
|
||||
}
|
||||
CODE_SAMPLE
|
||||
)]);
|
||||
}
|
||||
/**
|
||||
* @return array<class-string<Node>>
|
||||
*/
|
||||
public function getNodeTypes() : array
|
||||
{
|
||||
return [\PhpParser\Node\Stmt\Class_::class];
|
||||
}
|
||||
/**
|
||||
* @param Class_ $node
|
||||
*/
|
||||
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
|
||||
{
|
||||
foreach ($this->staticObjectTypes as $staticObjectType) {
|
||||
// do not any dependencies to class itself
|
||||
if ($this->isObjectType($node, $staticObjectType)) {
|
||||
continue;
|
||||
}
|
||||
$this->completeDependencyToConstructorOnly($node, $staticObjectType);
|
||||
if ($this->staticCallPresenceAnalyzer->hasClassAnyMethodWithStaticCallOnType($node, $staticObjectType)) {
|
||||
$propertyExpectedName = $this->propertyNaming->fqnToVariableName($staticObjectType);
|
||||
$propertyMetadata = new \Rector\PostRector\ValueObject\PropertyMetadata($propertyExpectedName, $staticObjectType, \PhpParser\Node\Stmt\Class_::MODIFIER_PRIVATE);
|
||||
$this->propertyToAddCollector->addPropertyToClass($node, $propertyMetadata);
|
||||
return $node;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private function completeDependencyToConstructorOnly(\PhpParser\Node\Stmt\Class_ $class, \PHPStan\Type\ObjectType $objectType) : void
|
||||
{
|
||||
$constructClassMethod = $class->getMethod(\Rector\Core\ValueObject\MethodName::CONSTRUCT);
|
||||
if (!$constructClassMethod instanceof \PhpParser\Node\Stmt\ClassMethod) {
|
||||
return;
|
||||
}
|
||||
$hasStaticCall = $this->staticCallPresenceAnalyzer->hasMethodStaticCallOnType($constructClassMethod, $objectType);
|
||||
if (!$hasStaticCall) {
|
||||
return;
|
||||
}
|
||||
$propertyExpectedName = $this->propertyNaming->fqnToVariableName($objectType);
|
||||
if ($this->isTypeAlreadyInParamMethod($constructClassMethod, $objectType)) {
|
||||
return;
|
||||
}
|
||||
$constructClassMethod->params[] = $this->createParam($propertyExpectedName, $objectType);
|
||||
}
|
||||
private function isTypeAlreadyInParamMethod(\PhpParser\Node\Stmt\ClassMethod $classMethod, \PHPStan\Type\ObjectType $objectType) : bool
|
||||
{
|
||||
foreach ($classMethod->getParams() as $param) {
|
||||
if ($param->type === null) {
|
||||
continue;
|
||||
}
|
||||
if ($this->isName($param->type, $objectType->getClassName())) {
|
||||
return \true;
|
||||
}
|
||||
}
|
||||
return \false;
|
||||
}
|
||||
private function createParam(string $propertyName, \PHPStan\Type\ObjectType $objectType) : \PhpParser\Node\Param
|
||||
{
|
||||
return new \PhpParser\Node\Param(new \PhpParser\Node\Expr\Variable($propertyName), null, new \PhpParser\Node\Name\FullyQualified($objectType->getClassName()));
|
||||
}
|
||||
}
|
|
@ -1,96 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
namespace Rector\RemovingStatic\Rector\Property;
|
||||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Stmt\ClassMethod;
|
||||
use PhpParser\Node\Stmt\Property;
|
||||
use PHPStan\Analyser\Scope;
|
||||
use PHPStan\Reflection\ClassReflection;
|
||||
use PHPStan\Type\ObjectType;
|
||||
use Rector\Core\Configuration\Option;
|
||||
use Rector\Core\Rector\AbstractRector;
|
||||
use Rector\NodeTypeResolver\Node\AttributeKey;
|
||||
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
|
||||
use RectorPrefix20220215\Symplify\PackageBuilder\Parameter\ParameterProvider;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
/**
|
||||
* @see \Rector\Tests\RemovingStatic\Rector\Property\DesiredPropertyClassMethodTypeToDynamicRector\DesiredPropertyClassMethodTypeToDynamicRectorTest
|
||||
*/
|
||||
final class DesiredPropertyClassMethodTypeToDynamicRector extends \Rector\Core\Rector\AbstractRector
|
||||
{
|
||||
/**
|
||||
* @var ObjectType[]
|
||||
*/
|
||||
private $staticObjectTypes = [];
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\Privatization\NodeManipulator\VisibilityManipulator
|
||||
*/
|
||||
private $visibilityManipulator;
|
||||
public function __construct(\RectorPrefix20220215\Symplify\PackageBuilder\Parameter\ParameterProvider $parameterProvider, \Rector\Privatization\NodeManipulator\VisibilityManipulator $visibilityManipulator)
|
||||
{
|
||||
$this->visibilityManipulator = $visibilityManipulator;
|
||||
$typesToRemoveStaticFrom = $parameterProvider->provideArrayParameter(\Rector\Core\Configuration\Option::TYPES_TO_REMOVE_STATIC_FROM);
|
||||
foreach ($typesToRemoveStaticFrom as $typeToRemoveStaticFrom) {
|
||||
$this->staticObjectTypes[] = new \PHPStan\Type\ObjectType($typeToRemoveStaticFrom);
|
||||
}
|
||||
}
|
||||
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
|
||||
{
|
||||
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Change defined static properties and methods to dynamic', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
|
||||
final class SomeClass
|
||||
{
|
||||
public static $name;
|
||||
|
||||
public static function go()
|
||||
{
|
||||
}
|
||||
}
|
||||
CODE_SAMPLE
|
||||
, <<<'CODE_SAMPLE'
|
||||
final class SomeClass
|
||||
{
|
||||
public $name;
|
||||
|
||||
public function go()
|
||||
{
|
||||
}
|
||||
}
|
||||
CODE_SAMPLE
|
||||
)]);
|
||||
}
|
||||
/**
|
||||
* @return array<class-string<Node>>
|
||||
*/
|
||||
public function getNodeTypes() : array
|
||||
{
|
||||
return [\PhpParser\Node\Stmt\Property::class, \PhpParser\Node\Stmt\ClassMethod::class];
|
||||
}
|
||||
/**
|
||||
* @param Property|ClassMethod $node
|
||||
*/
|
||||
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
|
||||
{
|
||||
/** @var Scope $scope */
|
||||
$scope = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::SCOPE);
|
||||
$classReflection = $scope->getClassReflection();
|
||||
if (!$classReflection instanceof \PHPStan\Reflection\ClassReflection) {
|
||||
return null;
|
||||
}
|
||||
$classObjectType = new \PHPStan\Type\ObjectType($classReflection->getName());
|
||||
foreach ($this->staticObjectTypes as $staticObjectType) {
|
||||
if (!$staticObjectType->isSuperTypeOf($classObjectType)->yes()) {
|
||||
continue;
|
||||
}
|
||||
if (!$node->isStatic()) {
|
||||
return null;
|
||||
}
|
||||
$this->visibilityManipulator->makeNonStatic($node);
|
||||
return $node;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -1,103 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
namespace Rector\RemovingStatic\Rector\StaticCall;
|
||||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Expr\MethodCall;
|
||||
use PhpParser\Node\Expr\PropertyFetch;
|
||||
use PhpParser\Node\Expr\StaticCall;
|
||||
use PhpParser\Node\Expr\Variable;
|
||||
use PhpParser\Node\Stmt\ClassMethod;
|
||||
use PHPStan\Type\ObjectType;
|
||||
use Rector\Core\Configuration\Option;
|
||||
use Rector\Core\Rector\AbstractRector;
|
||||
use Rector\Core\ValueObject\MethodName;
|
||||
use Rector\Naming\Naming\PropertyNaming;
|
||||
use RectorPrefix20220215\Symplify\PackageBuilder\Parameter\ParameterProvider;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
/**
|
||||
* @see \Rector\Tests\RemovingStatic\Rector\StaticCall\DesiredStaticCallTypeToDynamicRector\DesiredStaticCallTypeToDynamicRectorTest
|
||||
*/
|
||||
final class DesiredStaticCallTypeToDynamicRector extends \Rector\Core\Rector\AbstractRector
|
||||
{
|
||||
/**
|
||||
* @var ObjectType[]
|
||||
*/
|
||||
private $staticObjectTypes = [];
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\Naming\Naming\PropertyNaming
|
||||
*/
|
||||
private $propertyNaming;
|
||||
public function __construct(\Rector\Naming\Naming\PropertyNaming $propertyNaming, \RectorPrefix20220215\Symplify\PackageBuilder\Parameter\ParameterProvider $parameterProvider)
|
||||
{
|
||||
$this->propertyNaming = $propertyNaming;
|
||||
$typesToRemoveStaticFrom = $parameterProvider->provideArrayParameter(\Rector\Core\Configuration\Option::TYPES_TO_REMOVE_STATIC_FROM);
|
||||
foreach ($typesToRemoveStaticFrom as $typeToRemoveStaticFrom) {
|
||||
$this->staticObjectTypes[] = new \PHPStan\Type\ObjectType($typeToRemoveStaticFrom);
|
||||
}
|
||||
}
|
||||
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
|
||||
{
|
||||
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Change defined static service to dynamic one', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
|
||||
final class SomeClass
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
SomeStaticMethod::someStatic();
|
||||
}
|
||||
}
|
||||
CODE_SAMPLE
|
||||
, <<<'CODE_SAMPLE'
|
||||
final class SomeClass
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
$this->someStaticMethod->someStatic();
|
||||
}
|
||||
}
|
||||
CODE_SAMPLE
|
||||
)]);
|
||||
}
|
||||
/**
|
||||
* @return array<class-string<Node>>
|
||||
*/
|
||||
public function getNodeTypes() : array
|
||||
{
|
||||
return [\PhpParser\Node\Expr\StaticCall::class];
|
||||
}
|
||||
/**
|
||||
* @param StaticCall $node
|
||||
*/
|
||||
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
|
||||
{
|
||||
foreach ($this->staticObjectTypes as $staticObjectType) {
|
||||
if (!$this->isObjectType($node->class, $staticObjectType)) {
|
||||
continue;
|
||||
}
|
||||
// is the same class or external call?
|
||||
$className = $this->getName($node->class);
|
||||
if ($className === 'self') {
|
||||
return $this->createFromSelf($node);
|
||||
}
|
||||
$propertyName = $this->propertyNaming->fqnToVariableName($staticObjectType);
|
||||
$classMethod = $this->betterNodeFinder->findParentType($node, \PhpParser\Node\Stmt\ClassMethod::class);
|
||||
if (!$classMethod instanceof \PhpParser\Node\Stmt\ClassMethod) {
|
||||
return null;
|
||||
}
|
||||
if ($this->nodeNameResolver->isName($classMethod, \Rector\Core\ValueObject\MethodName::CONSTRUCT)) {
|
||||
$propertyFetch = new \PhpParser\Node\Expr\Variable($propertyName);
|
||||
} else {
|
||||
$propertyFetch = new \PhpParser\Node\Expr\PropertyFetch(new \PhpParser\Node\Expr\Variable('this'), $propertyName);
|
||||
}
|
||||
return new \PhpParser\Node\Expr\MethodCall($propertyFetch, $node->name, $node->args);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private function createFromSelf(\PhpParser\Node\Expr\StaticCall $staticCall) : \PhpParser\Node\Expr\MethodCall
|
||||
{
|
||||
return new \PhpParser\Node\Expr\MethodCall(new \PhpParser\Node\Expr\Variable('this'), $staticCall->name, $staticCall->args);
|
||||
}
|
||||
}
|
|
@ -1,114 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare (strict_types=1);
|
||||
namespace Rector\RemovingStatic\Rector\StaticPropertyFetch;
|
||||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Expr\PropertyFetch;
|
||||
use PhpParser\Node\Expr\StaticPropertyFetch;
|
||||
use PhpParser\Node\Expr\Variable;
|
||||
use PhpParser\Node\Stmt\Class_;
|
||||
use PHPStan\Analyser\Scope;
|
||||
use PHPStan\Reflection\ClassReflection;
|
||||
use PHPStan\Type\ObjectType;
|
||||
use Rector\Core\Configuration\Option;
|
||||
use Rector\Core\Rector\AbstractRector;
|
||||
use Rector\Naming\Naming\PropertyNaming;
|
||||
use Rector\NodeTypeResolver\Node\AttributeKey;
|
||||
use Rector\PostRector\Collector\PropertyToAddCollector;
|
||||
use Rector\PostRector\ValueObject\PropertyMetadata;
|
||||
use RectorPrefix20220215\Symplify\PackageBuilder\Parameter\ParameterProvider;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
/**
|
||||
* @see \Rector\Tests\RemovingStatic\Rector\StaticPropertyFetch\DesiredStaticPropertyFetchTypeToDynamicRector\DesiredStaticPropertyFetchTypeToDynamicRectorTest
|
||||
*/
|
||||
final class DesiredStaticPropertyFetchTypeToDynamicRector extends \Rector\Core\Rector\AbstractRector
|
||||
{
|
||||
/**
|
||||
* @var ObjectType[]
|
||||
*/
|
||||
private $staticObjectTypes = [];
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\Naming\Naming\PropertyNaming
|
||||
*/
|
||||
private $propertyNaming;
|
||||
/**
|
||||
* @readonly
|
||||
* @var \Rector\PostRector\Collector\PropertyToAddCollector
|
||||
*/
|
||||
private $propertyToAddCollector;
|
||||
public function __construct(\Rector\Naming\Naming\PropertyNaming $propertyNaming, \Rector\PostRector\Collector\PropertyToAddCollector $propertyToAddCollector, \RectorPrefix20220215\Symplify\PackageBuilder\Parameter\ParameterProvider $parameterProvider)
|
||||
{
|
||||
$this->propertyNaming = $propertyNaming;
|
||||
$this->propertyToAddCollector = $propertyToAddCollector;
|
||||
$typesToRemoveStaticFrom = $parameterProvider->provideArrayParameter(\Rector\Core\Configuration\Option::TYPES_TO_REMOVE_STATIC_FROM);
|
||||
foreach ($typesToRemoveStaticFrom as $typeToRemoveStaticFrom) {
|
||||
$this->staticObjectTypes[] = new \PHPStan\Type\ObjectType($typeToRemoveStaticFrom);
|
||||
}
|
||||
}
|
||||
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
|
||||
{
|
||||
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Change defined static service to dynamic one', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
|
||||
final class SomeClass
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
SomeStaticMethod::$someStatic;
|
||||
}
|
||||
}
|
||||
CODE_SAMPLE
|
||||
, <<<'CODE_SAMPLE'
|
||||
final class SomeClass
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
$this->someStaticMethod->someStatic;
|
||||
}
|
||||
}
|
||||
CODE_SAMPLE
|
||||
)]);
|
||||
}
|
||||
/**
|
||||
* @return array<class-string<Node>>
|
||||
*/
|
||||
public function getNodeTypes() : array
|
||||
{
|
||||
return [\PhpParser\Node\Expr\StaticPropertyFetch::class];
|
||||
}
|
||||
/**
|
||||
* @param StaticPropertyFetch $node
|
||||
*/
|
||||
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
|
||||
{
|
||||
/** @var Scope $scope */
|
||||
$scope = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::SCOPE);
|
||||
$classReflection = $scope->getClassReflection();
|
||||
if (!$classReflection instanceof \PHPStan\Reflection\ClassReflection) {
|
||||
return null;
|
||||
}
|
||||
$classObjectType = new \PHPStan\Type\ObjectType($classReflection->getName());
|
||||
// A. remove local fetch
|
||||
foreach ($this->staticObjectTypes as $staticObjectType) {
|
||||
if (!$staticObjectType->isSuperTypeOf($classObjectType)->yes()) {
|
||||
continue;
|
||||
}
|
||||
return new \PhpParser\Node\Expr\PropertyFetch(new \PhpParser\Node\Expr\Variable('this'), $node->name);
|
||||
}
|
||||
// B. external property fetch
|
||||
foreach ($this->staticObjectTypes as $staticObjectType) {
|
||||
if (!$this->isObjectType($node->class, $staticObjectType)) {
|
||||
continue;
|
||||
}
|
||||
$propertyName = $this->propertyNaming->fqnToVariableName($staticObjectType);
|
||||
/** @var Class_ $class */
|
||||
$class = $this->betterNodeFinder->findParentType($node, \PhpParser\Node\Stmt\Class_::class);
|
||||
$propertyMetadata = new \Rector\PostRector\ValueObject\PropertyMetadata($propertyName, $staticObjectType, \PhpParser\Node\Stmt\Class_::MODIFIER_PRIVATE);
|
||||
$this->propertyToAddCollector->addPropertyToClass($class, $propertyMetadata);
|
||||
$objectPropertyFetch = new \PhpParser\Node\Expr\PropertyFetch(new \PhpParser\Node\Expr\Variable('this'), $propertyName);
|
||||
return new \PhpParser\Node\Expr\PropertyFetch($objectPropertyFetch, $node->name);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -16,11 +16,11 @@ final class VersionResolver
|
|||
/**
|
||||
* @var string
|
||||
*/
|
||||
public const PACKAGE_VERSION = '9fe44263f906009ab96cae86c89a3ace6a941b41';
|
||||
public const PACKAGE_VERSION = '92d04a5547b445a20ca9d578a385ba41be27e451';
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public const RELEASE_DATE = '2022-02-15 22:58:51';
|
||||
public const RELEASE_DATE = '2022-02-15 23:38:07';
|
||||
public static function resolvePackageVersion() : string
|
||||
{
|
||||
$process = new \RectorPrefix20220215\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__);
|
||||
|
|
|
@ -114,10 +114,6 @@ final class Option
|
|||
* @var string
|
||||
*/
|
||||
public const PHPSTAN_FOR_RECTOR_PATH = 'phpstan_for_rector_path';
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public const TYPES_TO_REMOVE_STATIC_FROM = 'types_to_remove_static_from';
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
|
|
2
vendor/autoload.php
vendored
2
vendor/autoload.php
vendored
|
@ -4,4 +4,4 @@
|
|||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit94e603ff37b4f42de2dd41e489cddf66::getLoader();
|
||||
return ComposerAutoloaderInit65cd69f55c342a0269910718ad2dfe0d::getLoader();
|
||||
|
|
5
vendor/composer/autoload_classmap.php
vendored
5
vendor/composer/autoload_classmap.php
vendored
|
@ -2817,12 +2817,7 @@ return array(
|
|||
'Rector\\RectorInstaller\\LocalFilesystem' => $vendorDir . '/rector/extension-installer/src/LocalFilesystem.php',
|
||||
'Rector\\RectorInstaller\\Plugin' => $vendorDir . '/rector/extension-installer/src/Plugin.php',
|
||||
'Rector\\RectorInstaller\\PluginInstaller' => $vendorDir . '/rector/extension-installer/src/PluginInstaller.php',
|
||||
'Rector\\RemovingStatic\\NodeAnalyzer\\StaticCallPresenceAnalyzer' => $baseDir . '/rules/RemovingStatic/NodeAnalyzer/StaticCallPresenceAnalyzer.php',
|
||||
'Rector\\RemovingStatic\\Rector\\ClassMethod\\LocallyCalledStaticMethodToNonStaticRector' => $baseDir . '/rules/RemovingStatic/Rector/ClassMethod/LocallyCalledStaticMethodToNonStaticRector.php',
|
||||
'Rector\\RemovingStatic\\Rector\\Class_\\DesiredClassTypeToDynamicRector' => $baseDir . '/rules/RemovingStatic/Rector/Class_/DesiredClassTypeToDynamicRector.php',
|
||||
'Rector\\RemovingStatic\\Rector\\Property\\DesiredPropertyClassMethodTypeToDynamicRector' => $baseDir . '/rules/RemovingStatic/Rector/Property/DesiredPropertyClassMethodTypeToDynamicRector.php',
|
||||
'Rector\\RemovingStatic\\Rector\\StaticCall\\DesiredStaticCallTypeToDynamicRector' => $baseDir . '/rules/RemovingStatic/Rector/StaticCall/DesiredStaticCallTypeToDynamicRector.php',
|
||||
'Rector\\RemovingStatic\\Rector\\StaticPropertyFetch\\DesiredStaticPropertyFetchTypeToDynamicRector' => $baseDir . '/rules/RemovingStatic/Rector/StaticPropertyFetch/DesiredStaticPropertyFetchTypeToDynamicRector.php',
|
||||
'Rector\\Removing\\NodeAnalyzer\\ForbiddenPropertyRemovalAnalyzer' => $baseDir . '/rules/Removing/NodeAnalyzer/ForbiddenPropertyRemovalAnalyzer.php',
|
||||
'Rector\\Removing\\NodeManipulator\\ComplexNodeRemover' => $baseDir . '/rules/Removing/NodeManipulator/ComplexNodeRemover.php',
|
||||
'Rector\\Removing\\Rector\\ClassMethod\\ArgumentRemoverRector' => $baseDir . '/rules/Removing/Rector/ClassMethod/ArgumentRemoverRector.php',
|
||||
|
|
14
vendor/composer/autoload_real.php
vendored
14
vendor/composer/autoload_real.php
vendored
|
@ -2,7 +2,7 @@
|
|||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInit94e603ff37b4f42de2dd41e489cddf66
|
||||
class ComposerAutoloaderInit65cd69f55c342a0269910718ad2dfe0d
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
|
@ -22,15 +22,15 @@ class ComposerAutoloaderInit94e603ff37b4f42de2dd41e489cddf66
|
|||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInit94e603ff37b4f42de2dd41e489cddf66', 'loadClassLoader'), true, true);
|
||||
spl_autoload_register(array('ComposerAutoloaderInit65cd69f55c342a0269910718ad2dfe0d', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit94e603ff37b4f42de2dd41e489cddf66', 'loadClassLoader'));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit65cd69f55c342a0269910718ad2dfe0d', 'loadClassLoader'));
|
||||
|
||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||
if ($useStaticLoader) {
|
||||
require __DIR__ . '/autoload_static.php';
|
||||
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit94e603ff37b4f42de2dd41e489cddf66::getInitializer($loader));
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit65cd69f55c342a0269910718ad2dfe0d::getInitializer($loader));
|
||||
} else {
|
||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||
if ($classMap) {
|
||||
|
@ -42,12 +42,12 @@ class ComposerAutoloaderInit94e603ff37b4f42de2dd41e489cddf66
|
|||
$loader->register(true);
|
||||
|
||||
if ($useStaticLoader) {
|
||||
$includeFiles = Composer\Autoload\ComposerStaticInit94e603ff37b4f42de2dd41e489cddf66::$files;
|
||||
$includeFiles = Composer\Autoload\ComposerStaticInit65cd69f55c342a0269910718ad2dfe0d::$files;
|
||||
} else {
|
||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
||||
}
|
||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||
composerRequire94e603ff37b4f42de2dd41e489cddf66($fileIdentifier, $file);
|
||||
composerRequire65cd69f55c342a0269910718ad2dfe0d($fileIdentifier, $file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
|
@ -59,7 +59,7 @@ class ComposerAutoloaderInit94e603ff37b4f42de2dd41e489cddf66
|
|||
* @param string $file
|
||||
* @return void
|
||||
*/
|
||||
function composerRequire94e603ff37b4f42de2dd41e489cddf66($fileIdentifier, $file)
|
||||
function composerRequire65cd69f55c342a0269910718ad2dfe0d($fileIdentifier, $file)
|
||||
{
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
|
|
13
vendor/composer/autoload_static.php
vendored
13
vendor/composer/autoload_static.php
vendored
|
@ -4,7 +4,7 @@
|
|||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInit94e603ff37b4f42de2dd41e489cddf66
|
||||
class ComposerStaticInit65cd69f55c342a0269910718ad2dfe0d
|
||||
{
|
||||
public static $files = array (
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
|
@ -3206,12 +3206,7 @@ class ComposerStaticInit94e603ff37b4f42de2dd41e489cddf66
|
|||
'Rector\\RectorInstaller\\LocalFilesystem' => __DIR__ . '/..' . '/rector/extension-installer/src/LocalFilesystem.php',
|
||||
'Rector\\RectorInstaller\\Plugin' => __DIR__ . '/..' . '/rector/extension-installer/src/Plugin.php',
|
||||
'Rector\\RectorInstaller\\PluginInstaller' => __DIR__ . '/..' . '/rector/extension-installer/src/PluginInstaller.php',
|
||||
'Rector\\RemovingStatic\\NodeAnalyzer\\StaticCallPresenceAnalyzer' => __DIR__ . '/../..' . '/rules/RemovingStatic/NodeAnalyzer/StaticCallPresenceAnalyzer.php',
|
||||
'Rector\\RemovingStatic\\Rector\\ClassMethod\\LocallyCalledStaticMethodToNonStaticRector' => __DIR__ . '/../..' . '/rules/RemovingStatic/Rector/ClassMethod/LocallyCalledStaticMethodToNonStaticRector.php',
|
||||
'Rector\\RemovingStatic\\Rector\\Class_\\DesiredClassTypeToDynamicRector' => __DIR__ . '/../..' . '/rules/RemovingStatic/Rector/Class_/DesiredClassTypeToDynamicRector.php',
|
||||
'Rector\\RemovingStatic\\Rector\\Property\\DesiredPropertyClassMethodTypeToDynamicRector' => __DIR__ . '/../..' . '/rules/RemovingStatic/Rector/Property/DesiredPropertyClassMethodTypeToDynamicRector.php',
|
||||
'Rector\\RemovingStatic\\Rector\\StaticCall\\DesiredStaticCallTypeToDynamicRector' => __DIR__ . '/../..' . '/rules/RemovingStatic/Rector/StaticCall/DesiredStaticCallTypeToDynamicRector.php',
|
||||
'Rector\\RemovingStatic\\Rector\\StaticPropertyFetch\\DesiredStaticPropertyFetchTypeToDynamicRector' => __DIR__ . '/../..' . '/rules/RemovingStatic/Rector/StaticPropertyFetch/DesiredStaticPropertyFetchTypeToDynamicRector.php',
|
||||
'Rector\\Removing\\NodeAnalyzer\\ForbiddenPropertyRemovalAnalyzer' => __DIR__ . '/../..' . '/rules/Removing/NodeAnalyzer/ForbiddenPropertyRemovalAnalyzer.php',
|
||||
'Rector\\Removing\\NodeManipulator\\ComplexNodeRemover' => __DIR__ . '/../..' . '/rules/Removing/NodeManipulator/ComplexNodeRemover.php',
|
||||
'Rector\\Removing\\Rector\\ClassMethod\\ArgumentRemoverRector' => __DIR__ . '/../..' . '/rules/Removing/Rector/ClassMethod/ArgumentRemoverRector.php',
|
||||
|
@ -3881,9 +3876,9 @@ class ComposerStaticInit94e603ff37b4f42de2dd41e489cddf66
|
|||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInit94e603ff37b4f42de2dd41e489cddf66::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInit94e603ff37b4f42de2dd41e489cddf66::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInit94e603ff37b4f42de2dd41e489cddf66::$classMap;
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInit65cd69f55c342a0269910718ad2dfe0d::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInit65cd69f55c342a0269910718ad2dfe0d::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInit65cd69f55c342a0269910718ad2dfe0d::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
|
|
10
vendor/scoper-autoload.php
vendored
10
vendor/scoper-autoload.php
vendored
|
@ -9,8 +9,8 @@ $loader = require_once __DIR__.'/autoload.php';
|
|||
if (!class_exists('AutoloadIncluder', false) && !interface_exists('AutoloadIncluder', false) && !trait_exists('AutoloadIncluder', false)) {
|
||||
spl_autoload_call('RectorPrefix20220215\AutoloadIncluder');
|
||||
}
|
||||
if (!class_exists('ComposerAutoloaderInit94e603ff37b4f42de2dd41e489cddf66', false) && !interface_exists('ComposerAutoloaderInit94e603ff37b4f42de2dd41e489cddf66', false) && !trait_exists('ComposerAutoloaderInit94e603ff37b4f42de2dd41e489cddf66', false)) {
|
||||
spl_autoload_call('RectorPrefix20220215\ComposerAutoloaderInit94e603ff37b4f42de2dd41e489cddf66');
|
||||
if (!class_exists('ComposerAutoloaderInit65cd69f55c342a0269910718ad2dfe0d', false) && !interface_exists('ComposerAutoloaderInit65cd69f55c342a0269910718ad2dfe0d', false) && !trait_exists('ComposerAutoloaderInit65cd69f55c342a0269910718ad2dfe0d', false)) {
|
||||
spl_autoload_call('RectorPrefix20220215\ComposerAutoloaderInit65cd69f55c342a0269910718ad2dfe0d');
|
||||
}
|
||||
if (!class_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !interface_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !trait_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false)) {
|
||||
spl_autoload_call('RectorPrefix20220215\Helmich\TypoScriptParser\Parser\AST\Statement');
|
||||
|
@ -59,9 +59,9 @@ if (!function_exists('print_node')) {
|
|||
return \RectorPrefix20220215\print_node(...func_get_args());
|
||||
}
|
||||
}
|
||||
if (!function_exists('composerRequire94e603ff37b4f42de2dd41e489cddf66')) {
|
||||
function composerRequire94e603ff37b4f42de2dd41e489cddf66() {
|
||||
return \RectorPrefix20220215\composerRequire94e603ff37b4f42de2dd41e489cddf66(...func_get_args());
|
||||
if (!function_exists('composerRequire65cd69f55c342a0269910718ad2dfe0d')) {
|
||||
function composerRequire65cd69f55c342a0269910718ad2dfe0d() {
|
||||
return \RectorPrefix20220215\composerRequire65cd69f55c342a0269910718ad2dfe0d(...func_get_args());
|
||||
}
|
||||
}
|
||||
if (!function_exists('scanPath')) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user