Updated Rector to commit 68c2bcda1b

68c2bcda1b [composer] remove dependency on nette-to-symfony, very niche package that would require much work to be used in public (#290)
This commit is contained in:
Tomas Votruba 2021-06-25 17:12:46 +00:00
parent a254a9daef
commit 8ac9a8f8ba
58 changed files with 300 additions and 3214 deletions

View File

@ -27,7 +27,6 @@
"rector/rector-symfony": "*",
"rector/rector-doctrine": "*",
"rector/rector-nette": "*",
"rector/rector-nette-to-symfony": "*",
"rector/rector-cakephp": "*"
}
}

View File

@ -1,21 +0,0 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20210625;
use Rector\Core\ValueObject\Visibility;
use Rector\NetteToSymfony\Rector\MethodCall\WrapTransParameterNameRector;
use Rector\Renaming\Rector\MethodCall\RenameMethodRector;
use Rector\Renaming\Rector\Name\RenameClassRector;
use Rector\Renaming\ValueObject\MethodCallRename;
use Rector\Visibility\Rector\ClassMethod\ChangeMethodVisibilityRector;
use Rector\Visibility\ValueObject\ChangeMethodVisibility;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symplify\SymfonyPhpConfig\ValueObjectInliner;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->set(\Rector\Visibility\Rector\ClassMethod\ChangeMethodVisibilityRector::class)->call('configure', [[\Rector\Visibility\Rector\ClassMethod\ChangeMethodVisibilityRector::METHOD_VISIBILITIES => \Symplify\SymfonyPhpConfig\ValueObjectInliner::inline([new \Rector\Visibility\ValueObject\ChangeMethodVisibility('Kdyby\\Events\\Subscriber', 'getSubscribedEvents', \Rector\Core\ValueObject\Visibility::STATIC)])]]);
$services->set(\Rector\Renaming\Rector\MethodCall\RenameMethodRector::class)->call('configure', [[\Rector\Renaming\Rector\MethodCall\RenameMethodRector::METHOD_CALL_RENAMES => \Symplify\SymfonyPhpConfig\ValueObjectInliner::inline([new \Rector\Renaming\ValueObject\MethodCallRename('Kdyby\\Translation\\Translator', 'translate', 'trans'), new \Rector\Renaming\ValueObject\MethodCallRename('Kdyby\\RabbitMq\\IConsumer', 'process', 'execute')])]]);
$services->set(\Rector\Renaming\Rector\Name\RenameClassRector::class)->call('configure', [[\Rector\Renaming\Rector\Name\RenameClassRector::OLD_TO_NEW_CLASSES => ['Kdyby\\RabbitMq\\IConsumer' => 'OldSound\\RabbitMqBundle\\RabbitMq\\ConsumerInterface', 'Kdyby\\RabbitMq\\IProducer' => 'OldSound\\RabbitMqBundle\\RabbitMq\\ProducerInterface', 'Kdyby\\Monolog\\Logger' => 'Psr\\Log\\LoggerInterface', 'Kdyby\\Events\\Subscriber' => 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface', 'Kdyby\\Translation\\Translator' => 'Symfony\\Contracts\\Translation\\TranslatorInterface']]]);
$services->set(\Rector\NetteToSymfony\Rector\MethodCall\WrapTransParameterNameRector::class);
};

View File

@ -5,15 +5,10 @@ namespace Rector\NodeCollector\NodeVisitor;
use PhpParser\Node;
use PhpParser\NodeVisitorAbstract;
use Rector\NodeCollector\NodeCollector\NodeRepository;
use Rector\NodeCollector\NodeCollector\ParsedNodeCollector;
use Rector\NodeCollector\NodeCollector\ParsedPropertyFetchNodeCollector;
final class NodeCollectorNodeVisitor extends \PhpParser\NodeVisitorAbstract
{
/**
* @var \Rector\NodeCollector\NodeCollector\NodeRepository
*/
private $nodeRepository;
/**
* @var \Rector\NodeCollector\NodeCollector\ParsedNodeCollector
*/
@ -22,9 +17,8 @@ final class NodeCollectorNodeVisitor extends \PhpParser\NodeVisitorAbstract
* @var \Rector\NodeCollector\NodeCollector\ParsedPropertyFetchNodeCollector
*/
private $parsedPropertyFetchNodeCollector;
public function __construct(\Rector\NodeCollector\NodeCollector\NodeRepository $nodeRepository, \Rector\NodeCollector\NodeCollector\ParsedNodeCollector $parsedNodeCollector, \Rector\NodeCollector\NodeCollector\ParsedPropertyFetchNodeCollector $parsedPropertyFetchNodeCollector)
public function __construct(\Rector\NodeCollector\NodeCollector\ParsedNodeCollector $parsedNodeCollector, \Rector\NodeCollector\NodeCollector\ParsedPropertyFetchNodeCollector $parsedPropertyFetchNodeCollector)
{
$this->nodeRepository = $nodeRepository;
$this->parsedNodeCollector = $parsedNodeCollector;
$this->parsedPropertyFetchNodeCollector = $parsedPropertyFetchNodeCollector;
}

View File

@ -46,10 +46,6 @@ final class SetList implements \Rector\Set\Contract\SetListInterface
* @var string
*/
public const GMAGICK_TO_IMAGICK = __DIR__ . '/../../../config/set/gmagick_to_imagick.php';
/**
* @var string
*/
public const KDYBY_TO_SYMFONY = __DIR__ . '/../../../config/set/kdyby-to-symfony.php';
/**
* @var string
*/

View File

@ -2,248 +2,248 @@
declare(strict_types = 1);
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NameContext.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Parser/Multiple.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Comment.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NameContext.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Parser.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Lexer.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Error.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Builder.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Comment.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php';
require_once __DIR__ . '/vendor/symplify/symfony-php-config/src/Reflection/ArgumentAndParameterFactory.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php';
require_once __DIR__ . '/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php';
require_once __DIR__ . '/vendor/symplify/symfony-php-config/src/ValueObjectInliner.php';
require_once __DIR__ . '/vendor/symplify/symfony-php-config/src/Exception/ValueObjectException.php';
require_once __DIR__ . '/vendor/symplify/symfony-php-config/src/Reflection/ArgumentAndParameterFactory.php';
require_once __DIR__ . '/vendor/symfony/dependency-injection/Loader/Configurator/ContainerConfigurator.php';

View File

@ -8,7 +8,7 @@ use PhpParser\Node\Stmt\Interface_;
use Rector\Core\Rector\AbstractRector;
use Rector\FileSystemRector\ValueObject\AddedFileWithNodes;
use Rector\FileSystemRector\ValueObjectFactory\AddedFileWithNodesFactory;
use Rector\NetteToSymfony\NodeAnalyzer\NetteControlFactoryInterfaceAnalyzer;
use Rector\Nette\NodeAnalyzer\Component\NetteControlFactoryInterfaceAnalyzer;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
@ -19,14 +19,14 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
final class MoveInterfacesToContractNamespaceDirectoryRector extends \Rector\Core\Rector\AbstractRector
{
/**
* @var \Rector\NetteToSymfony\NodeAnalyzer\NetteControlFactoryInterfaceAnalyzer
* @var \Rector\Nette\NodeAnalyzer\Component\NetteControlFactoryInterfaceAnalyzer
*/
private $netteControlFactoryInterfaceAnalyzer;
/**
* @var \Rector\FileSystemRector\ValueObjectFactory\AddedFileWithNodesFactory
*/
private $addedFileWithNodesFactory;
public function __construct(\Rector\NetteToSymfony\NodeAnalyzer\NetteControlFactoryInterfaceAnalyzer $netteControlFactoryInterfaceAnalyzer, \Rector\FileSystemRector\ValueObjectFactory\AddedFileWithNodesFactory $addedFileWithNodesFactory)
public function __construct(\Rector\Nette\NodeAnalyzer\Component\NetteControlFactoryInterfaceAnalyzer $netteControlFactoryInterfaceAnalyzer, \Rector\FileSystemRector\ValueObjectFactory\AddedFileWithNodesFactory $addedFileWithNodesFactory)
{
$this->netteControlFactoryInterfaceAnalyzer = $netteControlFactoryInterfaceAnalyzer;
$this->addedFileWithNodesFactory = $addedFileWithNodesFactory;

View File

@ -11,7 +11,6 @@ use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\StaticCall;
use PHPStan\Reflection\ReflectionProvider;
use PHPStan\Type\ObjectType;
use Rector\Core\NodeManipulator\ClassMethodManipulator;
use Rector\Core\Rector\AbstractRector;
use Rector\NodeCollector\ScopeResolver\ParentClassScopeResolver;
use Rector\NodeCollector\StaticAnalyzer;
@ -25,10 +24,6 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
*/
final class StaticCallOnNonStaticToInstanceCallRector extends \Rector\Core\Rector\AbstractRector
{
/**
* @var \Rector\Core\NodeManipulator\ClassMethodManipulator
*/
private $classMethodManipulator;
/**
* @var \Rector\NodeCollector\StaticAnalyzer
*/
@ -41,9 +36,8 @@ final class StaticCallOnNonStaticToInstanceCallRector extends \Rector\Core\Recto
* @var \Rector\NodeCollector\ScopeResolver\ParentClassScopeResolver
*/
private $parentClassScopeResolver;
public function __construct(\Rector\Core\NodeManipulator\ClassMethodManipulator $classMethodManipulator, \Rector\NodeCollector\StaticAnalyzer $staticAnalyzer, \PHPStan\Reflection\ReflectionProvider $reflectionProvider, \Rector\NodeCollector\ScopeResolver\ParentClassScopeResolver $parentClassScopeResolver)
public function __construct(\Rector\NodeCollector\StaticAnalyzer $staticAnalyzer, \PHPStan\Reflection\ReflectionProvider $reflectionProvider, \Rector\NodeCollector\ScopeResolver\ParentClassScopeResolver $parentClassScopeResolver)
{
$this->classMethodManipulator = $classMethodManipulator;
$this->staticAnalyzer = $staticAnalyzer;
$this->reflectionProvider = $reflectionProvider;
$this->parentClassScopeResolver = $parentClassScopeResolver;

View File

@ -16,11 +16,11 @@ final class VersionResolver
/**
* @var string
*/
public const PACKAGE_VERSION = '417d89867df93be3a9b8e980be0d65296618a01c';
public const PACKAGE_VERSION = '68c2bcda1bad5b45226f6af5232c19139a902a95';
/**
* @var string
*/
public const RELEASE_DATE = '2021-06-25 17:37:55';
public const RELEASE_DATE = '2021-06-25 18:59:21';
public static function resolvePackageVersion() : string
{
$process = new \RectorPrefix20210625\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__);

2
vendor/autoload.php vendored
View File

@ -4,4 +4,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit4f63aa8e87141b4ceeebbcc45fb1e37f::getLoader();
return ComposerAutoloaderInit55d77de373068deda6c6409f95051069::getLoader();

View File

@ -2298,35 +2298,6 @@ return array(
'Rector\\Naming\\ValueObject\\VariableAndCallAssign' => $baseDir . '/rules/Naming/ValueObject/VariableAndCallAssign.php',
'Rector\\Naming\\ValueObject\\VariableAndCallForeach' => $baseDir . '/rules/Naming/ValueObject/VariableAndCallForeach.php',
'Rector\\Naming\\VariableRenamer' => $baseDir . '/rules/Naming/VariableRenamer.php',
'Rector\\NetteToSymfony\\AssertManipulator' => $vendorDir . '/rector/rector-nette-to-symfony/src/AssertManipulator.php',
'Rector\\NetteToSymfony\\Collector\\OnFormVariableMethodCallsCollector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Collector/OnFormVariableMethodCallsCollector.php',
'Rector\\NetteToSymfony\\NodeAnalyzer\\ClassMethodRenderAnalyzer' => $vendorDir . '/rector/rector-nette-to-symfony/src/NodeAnalyzer/ClassMethodRenderAnalyzer.php',
'Rector\\NetteToSymfony\\NodeAnalyzer\\NetteControlFactoryInterfaceAnalyzer' => $vendorDir . '/rector/rector-nette-to-symfony/src/NodeAnalyzer/NetteControlFactoryInterfaceAnalyzer.php',
'Rector\\NetteToSymfony\\NodeFactory\\ActionWithFormProcessClassMethodFactory' => $vendorDir . '/rector/rector-nette-to-symfony/src/NodeFactory/ActionWithFormProcessClassMethodFactory.php',
'Rector\\NetteToSymfony\\NodeFactory\\BuildFormClassMethodFactory' => $vendorDir . '/rector/rector-nette-to-symfony/src/NodeFactory/BuildFormClassMethodFactory.php',
'Rector\\NetteToSymfony\\NodeFactory\\SymfonyControllerFactory' => $vendorDir . '/rector/rector-nette-to-symfony/src/NodeFactory/SymfonyControllerFactory.php',
'Rector\\NetteToSymfony\\NodeFactory\\SymfonyMethodCallsFactory' => $vendorDir . '/rector/rector-nette-to-symfony/src/NodeFactory/SymfonyMethodCallsFactory.php',
'Rector\\NetteToSymfony\\Rector\\ClassMethod\\RenameEventNamesInEventSubscriberRector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Rector/ClassMethod/RenameEventNamesInEventSubscriberRector.php',
'Rector\\NetteToSymfony\\Rector\\ClassMethod\\RouterListToControllerAnnotationsRector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Rector/ClassMethod/RouterListToControllerAnnotationsRector.php',
'Rector\\NetteToSymfony\\Rector\\Class_\\FormControlToControllerAndFormTypeRector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Rector/Class_/FormControlToControllerAndFormTypeRector.php',
'Rector\\NetteToSymfony\\Rector\\Class_\\NetteControlToSymfonyControllerRector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Rector/Class_/NetteControlToSymfonyControllerRector.php',
'Rector\\NetteToSymfony\\Rector\\Class_\\NetteTesterClassToPHPUnitClassRector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Rector/Class_/NetteTesterClassToPHPUnitClassRector.php',
'Rector\\NetteToSymfony\\Rector\\Class_\\RenameTesterTestToPHPUnitToTestFileRector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Rector/Class_/RenameTesterTestToPHPUnitToTestFileRector.php',
'Rector\\NetteToSymfony\\Rector\\Interface_\\DeleteFactoryInterfaceRector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Rector/Interface_/DeleteFactoryInterfaceRector.php',
'Rector\\NetteToSymfony\\Rector\\MethodCall\\FromHttpRequestGetHeaderToHeadersGetRector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Rector/MethodCall/FromHttpRequestGetHeaderToHeadersGetRector.php',
'Rector\\NetteToSymfony\\Rector\\MethodCall\\FromRequestGetParameterToAttributesGetRector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Rector/MethodCall/FromRequestGetParameterToAttributesGetRector.php',
'Rector\\NetteToSymfony\\Rector\\MethodCall\\NetteFormToSymfonyFormRector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Rector/MethodCall/NetteFormToSymfonyFormRector.php',
'Rector\\NetteToSymfony\\Rector\\MethodCall\\WrapTransParameterNameRector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Rector/MethodCall/WrapTransParameterNameRector.php',
'Rector\\NetteToSymfony\\Rector\\StaticCall\\NetteAssertToPHPUnitAssertRector' => $vendorDir . '/rector/rector-nette-to-symfony/src/Rector/StaticCall/NetteAssertToPHPUnitAssertRector.php',
'Rector\\NetteToSymfony\\Route\\RouteInfoFactory' => $vendorDir . '/rector/rector-nette-to-symfony/src/Route/RouteInfoFactory.php',
'Rector\\NetteToSymfony\\Routing\\ExplicitRouteAnnotationDecorator' => $vendorDir . '/rector/rector-nette-to-symfony/src/Routing/ExplicitRouteAnnotationDecorator.php',
'Rector\\NetteToSymfony\\Set\\NetteToSymfonySetList' => $vendorDir . '/rector/rector-nette-to-symfony/src/Set/NetteToSymfonySetList.php',
'Rector\\NetteToSymfony\\SymfonyFormAbstractTypeFactory' => $vendorDir . '/rector/rector-nette-to-symfony/src/SymfonyFormAbstractTypeFactory.php',
'Rector\\NetteToSymfony\\ValueObjectFactory\\EventInfosFactory' => $vendorDir . '/rector/rector-nette-to-symfony/src/ValueObjectFactory/EventInfosFactory.php',
'Rector\\NetteToSymfony\\ValueObject\\ClassMethodRender' => $vendorDir . '/rector/rector-nette-to-symfony/src/ValueObject/ClassMethodRender.php',
'Rector\\NetteToSymfony\\ValueObject\\EventInfo' => $vendorDir . '/rector/rector-nette-to-symfony/src/ValueObject/EventInfo.php',
'Rector\\NetteToSymfony\\ValueObject\\NetteFormMethodToSymfonyTypeClass' => $vendorDir . '/rector/rector-nette-to-symfony/src/ValueObject/NetteFormMethodToSymfonyTypeClass.php',
'Rector\\NetteToSymfony\\ValueObject\\RouteInfo' => $vendorDir . '/rector/rector-nette-to-symfony/src/ValueObject/RouteInfo.php',
'Rector\\Nette\\Contract\\FormControlTypeResolverInterface' => $vendorDir . '/rector/rector-nette/src/Contract/FormControlTypeResolverInterface.php',
'Rector\\Nette\\Contract\\PregToNetteUtilsStringInterface' => $vendorDir . '/rector/rector-nette/src/Contract/PregToNetteUtilsStringInterface.php',
'Rector\\Nette\\Contract\\Rector\\LatteRectorInterface' => $vendorDir . '/rector/rector-nette/src/Contract/Rector/LatteRectorInterface.php',
@ -2358,6 +2329,7 @@ return array(
'Rector\\Nette\\Kdyby\\NodeResolver\\ListeningMethodsCollector' => $vendorDir . '/rector/rector-nette/src/Kdyby/NodeResolver/ListeningMethodsCollector.php',
'Rector\\Nette\\Kdyby\\Rector\\ClassMethod\\ChangeNetteEventNamesInGetSubscribedEventsRector' => $vendorDir . '/rector/rector-nette/src/Kdyby/Rector/ClassMethod/ChangeNetteEventNamesInGetSubscribedEventsRector.php',
'Rector\\Nette\\Kdyby\\Rector\\MethodCall\\ReplaceEventManagerWithEventSubscriberRector' => $vendorDir . '/rector/rector-nette/src/Kdyby/Rector/MethodCall/ReplaceEventManagerWithEventSubscriberRector.php',
'Rector\\Nette\\Kdyby\\Rector\\MethodCall\\WrapTransParameterNameRector' => $vendorDir . '/rector/rector-nette/src/Kdyby/Rector/MethodCall/WrapTransParameterNameRector.php',
'Rector\\Nette\\Kdyby\\ValueObject\\EventAndListenerTree' => $vendorDir . '/rector/rector-nette/src/Kdyby/ValueObject/EventAndListenerTree.php',
'Rector\\Nette\\Kdyby\\ValueObject\\EventClassAndClassMethod' => $vendorDir . '/rector/rector-nette/src/Kdyby/ValueObject/EventClassAndClassMethod.php',
'Rector\\Nette\\Kdyby\\ValueObject\\GetterMethodBlueprint' => $vendorDir . '/rector/rector-nette/src/Kdyby/ValueObject/GetterMethodBlueprint.php',
@ -2370,6 +2342,7 @@ return array(
'Rector\\Nette\\NodeAnalyzer\\ArrayDimFetchAnalyzer' => $vendorDir . '/rector/rector-nette/src/NodeAnalyzer/ArrayDimFetchAnalyzer.php',
'Rector\\Nette\\NodeAnalyzer\\AssignAnalyzer' => $vendorDir . '/rector/rector-nette/src/NodeAnalyzer/AssignAnalyzer.php',
'Rector\\Nette\\NodeAnalyzer\\BinaryOpAnalyzer' => $vendorDir . '/rector/rector-nette/src/NodeAnalyzer/BinaryOpAnalyzer.php',
'Rector\\Nette\\NodeAnalyzer\\Component\\NetteControlFactoryInterfaceAnalyzer' => $vendorDir . '/rector/rector-nette/src/NodeAnalyzer/Component/NetteControlFactoryInterfaceAnalyzer.php',
'Rector\\Nette\\NodeAnalyzer\\ConditionalTemplateAssignReplacer' => $vendorDir . '/rector/rector-nette/src/NodeAnalyzer/ConditionalTemplateAssignReplacer.php',
'Rector\\Nette\\NodeAnalyzer\\ControlDimFetchAnalyzer' => $vendorDir . '/rector/rector-nette/src/NodeAnalyzer/ControlDimFetchAnalyzer.php',
'Rector\\Nette\\NodeAnalyzer\\NetteClassAnalyzer' => $vendorDir . '/rector/rector-nette/src/NodeAnalyzer/NetteClassAnalyzer.php',

View File

@ -14,7 +14,6 @@ return array(
'Rector\\RectorInstaller\\' => array($vendorDir . '/rector/extension-installer/src'),
'Rector\\PHPUnit\\' => array($vendorDir . '/rector/rector-phpunit/src'),
'Rector\\Nette\\' => array($vendorDir . '/rector/rector-nette/src'),
'Rector\\NetteToSymfony\\' => array($vendorDir . '/rector/rector-nette-to-symfony/src'),
'Rector\\Laravel\\' => array($vendorDir . '/rector/rector-laravel/src'),
'Rector\\Doctrine\\' => array($vendorDir . '/rector/rector-doctrine/src'),
'Rector\\Core\\' => array($baseDir . '/src'),

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit4f63aa8e87141b4ceeebbcc45fb1e37f
class ComposerAutoloaderInit55d77de373068deda6c6409f95051069
{
private static $loader;
@ -22,15 +22,15 @@ class ComposerAutoloaderInit4f63aa8e87141b4ceeebbcc45fb1e37f
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit4f63aa8e87141b4ceeebbcc45fb1e37f', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInit55d77de373068deda6c6409f95051069', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInit4f63aa8e87141b4ceeebbcc45fb1e37f', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInit55d77de373068deda6c6409f95051069', '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\ComposerStaticInit4f63aa8e87141b4ceeebbcc45fb1e37f::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInit55d77de373068deda6c6409f95051069::getInitializer($loader));
} else {
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
@ -42,19 +42,19 @@ class ComposerAutoloaderInit4f63aa8e87141b4ceeebbcc45fb1e37f
$loader->register(true);
if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInit4f63aa8e87141b4ceeebbcc45fb1e37f::$files;
$includeFiles = Composer\Autoload\ComposerStaticInit55d77de373068deda6c6409f95051069::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequire4f63aa8e87141b4ceeebbcc45fb1e37f($fileIdentifier, $file);
composerRequire55d77de373068deda6c6409f95051069($fileIdentifier, $file);
}
return $loader;
}
}
function composerRequire4f63aa8e87141b4ceeebbcc45fb1e37f($fileIdentifier, $file)
function composerRequire55d77de373068deda6c6409f95051069($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInit4f63aa8e87141b4ceeebbcc45fb1e37f
class ComposerStaticInit55d77de373068deda6c6409f95051069
{
public static $files = array (
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
@ -38,7 +38,6 @@ class ComposerStaticInit4f63aa8e87141b4ceeebbcc45fb1e37f
'Rector\\RectorInstaller\\' => 23,
'Rector\\PHPUnit\\' => 15,
'Rector\\Nette\\' => 13,
'Rector\\NetteToSymfony\\' => 22,
'Rector\\Laravel\\' => 15,
'Rector\\Doctrine\\' => 16,
'Rector\\Core\\' => 12,
@ -133,10 +132,6 @@ class ComposerStaticInit4f63aa8e87141b4ceeebbcc45fb1e37f
array (
0 => __DIR__ . '/..' . '/rector/rector-nette/src',
),
'Rector\\NetteToSymfony\\' =>
array (
0 => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src',
),
'Rector\\Laravel\\' =>
array (
0 => __DIR__ . '/..' . '/rector/rector-laravel/src',
@ -2653,35 +2648,6 @@ class ComposerStaticInit4f63aa8e87141b4ceeebbcc45fb1e37f
'Rector\\Naming\\ValueObject\\VariableAndCallAssign' => __DIR__ . '/../..' . '/rules/Naming/ValueObject/VariableAndCallAssign.php',
'Rector\\Naming\\ValueObject\\VariableAndCallForeach' => __DIR__ . '/../..' . '/rules/Naming/ValueObject/VariableAndCallForeach.php',
'Rector\\Naming\\VariableRenamer' => __DIR__ . '/../..' . '/rules/Naming/VariableRenamer.php',
'Rector\\NetteToSymfony\\AssertManipulator' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/AssertManipulator.php',
'Rector\\NetteToSymfony\\Collector\\OnFormVariableMethodCallsCollector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Collector/OnFormVariableMethodCallsCollector.php',
'Rector\\NetteToSymfony\\NodeAnalyzer\\ClassMethodRenderAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/NodeAnalyzer/ClassMethodRenderAnalyzer.php',
'Rector\\NetteToSymfony\\NodeAnalyzer\\NetteControlFactoryInterfaceAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/NodeAnalyzer/NetteControlFactoryInterfaceAnalyzer.php',
'Rector\\NetteToSymfony\\NodeFactory\\ActionWithFormProcessClassMethodFactory' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/NodeFactory/ActionWithFormProcessClassMethodFactory.php',
'Rector\\NetteToSymfony\\NodeFactory\\BuildFormClassMethodFactory' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/NodeFactory/BuildFormClassMethodFactory.php',
'Rector\\NetteToSymfony\\NodeFactory\\SymfonyControllerFactory' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/NodeFactory/SymfonyControllerFactory.php',
'Rector\\NetteToSymfony\\NodeFactory\\SymfonyMethodCallsFactory' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/NodeFactory/SymfonyMethodCallsFactory.php',
'Rector\\NetteToSymfony\\Rector\\ClassMethod\\RenameEventNamesInEventSubscriberRector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Rector/ClassMethod/RenameEventNamesInEventSubscriberRector.php',
'Rector\\NetteToSymfony\\Rector\\ClassMethod\\RouterListToControllerAnnotationsRector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Rector/ClassMethod/RouterListToControllerAnnotationsRector.php',
'Rector\\NetteToSymfony\\Rector\\Class_\\FormControlToControllerAndFormTypeRector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Rector/Class_/FormControlToControllerAndFormTypeRector.php',
'Rector\\NetteToSymfony\\Rector\\Class_\\NetteControlToSymfonyControllerRector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Rector/Class_/NetteControlToSymfonyControllerRector.php',
'Rector\\NetteToSymfony\\Rector\\Class_\\NetteTesterClassToPHPUnitClassRector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Rector/Class_/NetteTesterClassToPHPUnitClassRector.php',
'Rector\\NetteToSymfony\\Rector\\Class_\\RenameTesterTestToPHPUnitToTestFileRector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Rector/Class_/RenameTesterTestToPHPUnitToTestFileRector.php',
'Rector\\NetteToSymfony\\Rector\\Interface_\\DeleteFactoryInterfaceRector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Rector/Interface_/DeleteFactoryInterfaceRector.php',
'Rector\\NetteToSymfony\\Rector\\MethodCall\\FromHttpRequestGetHeaderToHeadersGetRector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Rector/MethodCall/FromHttpRequestGetHeaderToHeadersGetRector.php',
'Rector\\NetteToSymfony\\Rector\\MethodCall\\FromRequestGetParameterToAttributesGetRector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Rector/MethodCall/FromRequestGetParameterToAttributesGetRector.php',
'Rector\\NetteToSymfony\\Rector\\MethodCall\\NetteFormToSymfonyFormRector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Rector/MethodCall/NetteFormToSymfonyFormRector.php',
'Rector\\NetteToSymfony\\Rector\\MethodCall\\WrapTransParameterNameRector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Rector/MethodCall/WrapTransParameterNameRector.php',
'Rector\\NetteToSymfony\\Rector\\StaticCall\\NetteAssertToPHPUnitAssertRector' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Rector/StaticCall/NetteAssertToPHPUnitAssertRector.php',
'Rector\\NetteToSymfony\\Route\\RouteInfoFactory' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Route/RouteInfoFactory.php',
'Rector\\NetteToSymfony\\Routing\\ExplicitRouteAnnotationDecorator' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Routing/ExplicitRouteAnnotationDecorator.php',
'Rector\\NetteToSymfony\\Set\\NetteToSymfonySetList' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/Set/NetteToSymfonySetList.php',
'Rector\\NetteToSymfony\\SymfonyFormAbstractTypeFactory' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/SymfonyFormAbstractTypeFactory.php',
'Rector\\NetteToSymfony\\ValueObjectFactory\\EventInfosFactory' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/ValueObjectFactory/EventInfosFactory.php',
'Rector\\NetteToSymfony\\ValueObject\\ClassMethodRender' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/ValueObject/ClassMethodRender.php',
'Rector\\NetteToSymfony\\ValueObject\\EventInfo' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/ValueObject/EventInfo.php',
'Rector\\NetteToSymfony\\ValueObject\\NetteFormMethodToSymfonyTypeClass' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/ValueObject/NetteFormMethodToSymfonyTypeClass.php',
'Rector\\NetteToSymfony\\ValueObject\\RouteInfo' => __DIR__ . '/..' . '/rector/rector-nette-to-symfony/src/ValueObject/RouteInfo.php',
'Rector\\Nette\\Contract\\FormControlTypeResolverInterface' => __DIR__ . '/..' . '/rector/rector-nette/src/Contract/FormControlTypeResolverInterface.php',
'Rector\\Nette\\Contract\\PregToNetteUtilsStringInterface' => __DIR__ . '/..' . '/rector/rector-nette/src/Contract/PregToNetteUtilsStringInterface.php',
'Rector\\Nette\\Contract\\Rector\\LatteRectorInterface' => __DIR__ . '/..' . '/rector/rector-nette/src/Contract/Rector/LatteRectorInterface.php',
@ -2713,6 +2679,7 @@ class ComposerStaticInit4f63aa8e87141b4ceeebbcc45fb1e37f
'Rector\\Nette\\Kdyby\\NodeResolver\\ListeningMethodsCollector' => __DIR__ . '/..' . '/rector/rector-nette/src/Kdyby/NodeResolver/ListeningMethodsCollector.php',
'Rector\\Nette\\Kdyby\\Rector\\ClassMethod\\ChangeNetteEventNamesInGetSubscribedEventsRector' => __DIR__ . '/..' . '/rector/rector-nette/src/Kdyby/Rector/ClassMethod/ChangeNetteEventNamesInGetSubscribedEventsRector.php',
'Rector\\Nette\\Kdyby\\Rector\\MethodCall\\ReplaceEventManagerWithEventSubscriberRector' => __DIR__ . '/..' . '/rector/rector-nette/src/Kdyby/Rector/MethodCall/ReplaceEventManagerWithEventSubscriberRector.php',
'Rector\\Nette\\Kdyby\\Rector\\MethodCall\\WrapTransParameterNameRector' => __DIR__ . '/..' . '/rector/rector-nette/src/Kdyby/Rector/MethodCall/WrapTransParameterNameRector.php',
'Rector\\Nette\\Kdyby\\ValueObject\\EventAndListenerTree' => __DIR__ . '/..' . '/rector/rector-nette/src/Kdyby/ValueObject/EventAndListenerTree.php',
'Rector\\Nette\\Kdyby\\ValueObject\\EventClassAndClassMethod' => __DIR__ . '/..' . '/rector/rector-nette/src/Kdyby/ValueObject/EventClassAndClassMethod.php',
'Rector\\Nette\\Kdyby\\ValueObject\\GetterMethodBlueprint' => __DIR__ . '/..' . '/rector/rector-nette/src/Kdyby/ValueObject/GetterMethodBlueprint.php',
@ -2725,6 +2692,7 @@ class ComposerStaticInit4f63aa8e87141b4ceeebbcc45fb1e37f
'Rector\\Nette\\NodeAnalyzer\\ArrayDimFetchAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAnalyzer/ArrayDimFetchAnalyzer.php',
'Rector\\Nette\\NodeAnalyzer\\AssignAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAnalyzer/AssignAnalyzer.php',
'Rector\\Nette\\NodeAnalyzer\\BinaryOpAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAnalyzer/BinaryOpAnalyzer.php',
'Rector\\Nette\\NodeAnalyzer\\Component\\NetteControlFactoryInterfaceAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAnalyzer/Component/NetteControlFactoryInterfaceAnalyzer.php',
'Rector\\Nette\\NodeAnalyzer\\ConditionalTemplateAssignReplacer' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAnalyzer/ConditionalTemplateAssignReplacer.php',
'Rector\\Nette\\NodeAnalyzer\\ControlDimFetchAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAnalyzer/ControlDimFetchAnalyzer.php',
'Rector\\Nette\\NodeAnalyzer\\NetteClassAnalyzer' => __DIR__ . '/..' . '/rector/rector-nette/src/NodeAnalyzer/NetteClassAnalyzer.php',
@ -3870,9 +3838,9 @@ class ComposerStaticInit4f63aa8e87141b4ceeebbcc45fb1e37f
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit4f63aa8e87141b4ceeebbcc45fb1e37f::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit4f63aa8e87141b4ceeebbcc45fb1e37f::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit4f63aa8e87141b4ceeebbcc45fb1e37f::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInit55d77de373068deda6c6409f95051069::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit55d77de373068deda6c6409f95051069::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit55d77de373068deda6c6409f95051069::$classMap;
}, null, ClassLoader::class);
}

View File

@ -1288,17 +1288,17 @@
},
{
"name": "rector\/rector-nette",
"version": "0.11.6",
"version_normalized": "0.11.6.0",
"version": "0.11.8",
"version_normalized": "0.11.8.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-nette.git",
"reference": "62536cd20f2b7363644f725128615780f7d6c6c0"
"reference": "fa07ca590dfa50a17f4568bd3e6c5a7526db2a42"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-nette\/zipball\/62536cd20f2b7363644f725128615780f7d6c6c0",
"reference": "62536cd20f2b7363644f725128615780f7d6c6c0",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-nette\/zipball\/fa07ca590dfa50a17f4568bd3e6c5a7526db2a42",
"reference": "fa07ca590dfa50a17f4568bd3e6c5a7526db2a42",
"shasum": ""
},
"require": {
@ -1324,7 +1324,7 @@
"symplify\/phpstan-rules": "^9.3",
"symplify\/rule-doc-generator": "^9.3"
},
"time": "2021-06-24T22:09:45+00:00",
"time": "2021-06-25T16:20:20+00:00",
"type": "rector-extension",
"extra": {
"branch-alias": {
@ -1349,81 +1349,10 @@
"description": "Rector upgrades rules for Nette Framework",
"support": {
"issues": "https:\/\/github.com\/rectorphp\/rector-nette\/issues",
"source": "https:\/\/github.com\/rectorphp\/rector-nette\/tree\/0.11.6"
"source": "https:\/\/github.com\/rectorphp\/rector-nette\/tree\/0.11.8"
},
"install-path": "..\/rector\/rector-nette"
},
{
"name": "rector\/rector-nette-to-symfony",
"version": "0.11.5",
"version_normalized": "0.11.5.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-nette-to-symfony.git",
"reference": "623ca58091b7a8313c72c9de82099da2492a99f1"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-nette-to-symfony\/zipball\/623ca58091b7a8313c72c9de82099da2492a99f1",
"reference": "623ca58091b7a8313c72c9de82099da2492a99f1",
"shasum": ""
},
"require": {
"php": ">=8.0",
"rector\/rector-nette": "^0.11"
},
"conflict": {
"rector\/rector": "<0.11"
},
"require-dev": {
"nette\/application": "^3.1",
"nette\/forms": "^3.1",
"phpstan\/extension-installer": "^1.1",
"phpstan\/phpstan-nette": "^0.12.16",
"phpunit\/phpunit": "^9.5",
"rector\/phpstan-rules": "^0.2.8",
"rector\/rector-src": "^0.11",
"symfony\/form": "^5.2",
"symplify\/easy-coding-standard": "^9.3",
"symplify\/phpstan-extensions": "^9.3",
"symplify\/phpstan-rules": "^9.3",
"symplify\/rule-doc-generator": "^9.3"
},
"time": "2021-06-24T16:29:59+00:00",
"type": "rector-extension",
"extra": {
"branch-alias": {
"dev-main": "0.11-dev"
},
"rector": {
"includes": [
"config\/config.php"
]
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Rector\\NetteToSymfony\\": "src"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
"license": [
"MIT"
],
"description": "Generate Rector rules from command line",
"support": {
"issues": "https:\/\/github.com\/rectorphp\/rector-nette-to-symfony\/issues",
"source": "https:\/\/github.com\/rectorphp\/rector-nette-to-symfony\/tree\/0.11.5"
},
"funding": [
{
"url": "https:\/\/github.com\/tomasvotruba",
"type": "github"
}
],
"install-path": "..\/rector\/rector-nette-to-symfony"
},
{
"name": "rector\/rector-phpunit",
"version": "0.11.2",

File diff suppressed because one or more lines are too long

View File

@ -9,7 +9,7 @@ namespace Rector\RectorInstaller;
*/
final class GeneratedConfig
{
public const EXTENSIONS = array('rector/rector-cakephp' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-cakephp', 'relative_install_path' => '../../rector-cakephp', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.3'), 'rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.6'), 'rector/rector-laravel' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-laravel', 'relative_install_path' => '../../rector-laravel', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.2'), 'rector/rector-nette' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-nette', 'relative_install_path' => '../../rector-nette', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.6'), 'rector/rector-nette-to-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-nette-to-symfony', 'relative_install_path' => '../../rector-nette-to-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.5'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.2'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.7'), 'ssch/typo3-rector' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/ssch/typo3-rector', 'relative_install_path' => '../../../ssch/typo3-rector', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'v0.11.17'));
public const EXTENSIONS = array('rector/rector-cakephp' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-cakephp', 'relative_install_path' => '../../rector-cakephp', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.3'), 'rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.6'), 'rector/rector-laravel' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-laravel', 'relative_install_path' => '../../rector-laravel', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.2'), 'rector/rector-nette' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-nette', 'relative_install_path' => '../../rector-nette', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.8'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.2'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => '0.11.7'), 'ssch/typo3-rector' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/ssch/typo3-rector', 'relative_install_path' => '../../../ssch/typo3-rector', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'v0.11.17'));
private function __construct()
{
}

View File

@ -1,61 +0,0 @@
{
"name": "rector\/rector-nette-to-symfony",
"type": "rector-extension",
"description": "Generate Rector rules from command line",
"license": "MIT",
"require": {
"php": ">=8.0",
"rector\/rector-nette": "^0.11"
},
"require-dev": {
"rector\/rector-src": "^0.11",
"phpunit\/phpunit": "^9.5",
"symplify\/phpstan-rules": "^9.3",
"symplify\/phpstan-extensions": "^9.3",
"symplify\/easy-coding-standard": "^9.3",
"phpstan\/phpstan-nette": "^0.12.16",
"symplify\/rule-doc-generator": "^9.3",
"phpstan\/extension-installer": "^1.1",
"rector\/phpstan-rules": "^0.2.8",
"nette\/application": "^3.1",
"symfony\/form": "^5.2",
"nette\/forms": "^3.1"
},
"autoload": {
"psr-4": {
"Rector\\NetteToSymfony\\": "src"
}
},
"autoload-dev": {
"psr-4": {
"Rector\\NetteToSymfony\\Tests\\": "tests"
},
"classmap": [
"stubs"
]
},
"scripts": {
"check-cs": "vendor\/bin\/ecs check --ansi",
"fix-cs": "vendor\/bin\/ecs check --fix --ansi",
"phpstan": "vendor\/bin\/phpstan analyse --ansi --error-format symplify",
"docs": [
"vendor\/bin\/rule-doc-generator generate src --output-file docs\/rector_rules_overview.md --ansi",
"vendor\/bin\/ecs check-markdown docs\/rector_rules_overview.md --ansi --fix"
]
},
"extra": {
"branch-alias": {
"dev-main": "0.11-dev"
},
"rector": {
"includes": [
"config\/config.php"
]
}
},
"conflict": {
"rector\/rector": "<0.11"
},
"minimum-stability": "dev",
"prefer-stable": true
}

View File

@ -1,13 +0,0 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20210625;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use RectorPrefix20210625\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->defaults()->public()->autowire()->autoconfigure();
$services->load('Rector\\NetteToSymfony\\', __DIR__ . '/../src')->exclude([__DIR__ . '/../src/Rector', __DIR__ . '/../src/ValueObject']);
$services->set(\RectorPrefix20210625\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser::class);
};

View File

@ -1,11 +0,0 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20210625;
use Rector\NetteToSymfony\Rector\ClassMethod\RenameEventNamesInEventSubscriberRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->set(\Rector\NetteToSymfony\Rector\ClassMethod\RenameEventNamesInEventSubscriberRector::class);
};

View File

@ -1,11 +0,0 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20210625;
use Rector\NetteToSymfony\Rector\Class_\NetteControlToSymfonyControllerRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->set(\Rector\NetteToSymfony\Rector\Class_\NetteControlToSymfonyControllerRector::class);
};

View File

@ -1,11 +0,0 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20210625;
use Rector\NetteToSymfony\Rector\MethodCall\NetteFormToSymfonyFormRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->set(\Rector\NetteToSymfony\Rector\MethodCall\NetteFormToSymfonyFormRector::class);
};

View File

@ -1,15 +0,0 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20210625;
use Rector\NetteTesterToPHPUnit\Rector\Class_\NetteTesterClassToPHPUnitClassRector;
use Rector\NetteTesterToPHPUnit\Rector\Class_\RenameTesterTestToPHPUnitToTestFileRector;
use Rector\NetteTesterToPHPUnit\Rector\StaticCall\NetteAssertToPHPUnitAssertRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->set(\Rector\NetteTesterToPHPUnit\Rector\Class_\NetteTesterClassToPHPUnitClassRector::class);
$services->set(\Rector\NetteTesterToPHPUnit\Rector\StaticCall\NetteAssertToPHPUnitAssertRector::class);
$services->set(\Rector\NetteTesterToPHPUnit\Rector\Class_\RenameTesterTestToPHPUnitToTestFileRector::class);
};

View File

@ -1,11 +0,0 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20210625;
use Rector\Renaming\Rector\Name\RenameClassRector;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->set(\Rector\Renaming\Rector\Name\RenameClassRector::class)->call('configure', [[\Rector\Renaming\Rector\Name\RenameClassRector::OLD_TO_NEW_CLASSES => ['Doctrine\\Common\\DataFixtures\\AbstractFixture' => 'Doctrine\\Bundle\\FixturesBundle\\Fixture']]]);
};

File diff suppressed because one or more lines are too long

View File

@ -1,238 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Cast\Bool_;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\ClassMethod;
use PHPStan\PhpDocParser\Ast\PhpDoc\GenericTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode;
use PHPStan\Type\BooleanType;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\Core\PhpParser\Node\Value\ValueResolver;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\NodeTypeResolver;
use Rector\NodeTypeResolver\TypeAnalyzer\StringTypeAnalyzer;
use Rector\PostRector\Collector\NodesToAddCollector;
use Rector\PostRector\Collector\NodesToRemoveCollector;
final class AssertManipulator
{
/**
* @see https://github.com/nette/tester/blob/master/src/Framework/Assert.php
*
* @see https://github.com/sebastianbergmann/phpunit/blob/master/src/Framework/Assert.php
*
* @var array<string, string>
*/
private const ASSERT_METHODS_REMAP = ['same' => 'assertSame', 'notSame' => 'assertNotSame', 'equal' => 'assertEqual', 'notEqual' => 'assertNotEqual', 'true' => 'assertTrue', 'false' => 'assertFalse', 'null' => 'assertNull', 'notNull' => 'assertNotNull', 'count' => 'assertCount', 'match' => 'assertStringMatchesFormat', 'matchFile' => 'assertStringMatchesFormatFile', 'nan' => 'assertIsNumeric'];
/**
* @var string[]
*/
private const TYPE_TO_METHOD = ['list' => 'assertIsArray', 'array' => 'assertIsArray', 'bool' => 'assertIsBool', 'callable' => 'assertIsCallable', 'float' => 'assertIsFloat', 'int' => 'assertIsInt', 'integer' => 'assertIsInt', 'object' => 'assertIsObject', 'resource' => 'assertIsResource', 'string' => 'assertIsString', 'scalar' => 'assertIsScalar'];
/**
* @var string
*/
private const CONTAINS = 'contains';
/**
* @var string
*/
private const THIS = 'this';
/**
* @var string
*/
private const SELF = 'self';
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
/**
* @var \Rector\NodeTypeResolver\NodeTypeResolver
*/
private $nodeTypeResolver;
/**
* @var \Rector\PostRector\Collector\NodesToAddCollector
*/
private $nodesToAddCollector;
/**
* @var \Rector\PostRector\Collector\NodesToRemoveCollector
*/
private $nodesToRemoveCollector;
/**
* @var \Rector\NodeTypeResolver\TypeAnalyzer\StringTypeAnalyzer
*/
private $stringTypeAnalyzer;
/**
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
*/
private $valueResolver;
/**
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/
private $phpDocInfoFactory;
public function __construct(\Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver, \Rector\NodeTypeResolver\NodeTypeResolver $nodeTypeResolver, \Rector\PostRector\Collector\NodesToAddCollector $nodesToAddCollector, \Rector\PostRector\Collector\NodesToRemoveCollector $nodesToRemoveCollector, \Rector\NodeTypeResolver\TypeAnalyzer\StringTypeAnalyzer $stringTypeAnalyzer, \Rector\Core\PhpParser\Node\Value\ValueResolver $valueResolver, \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory $phpDocInfoFactory)
{
$this->nodeNameResolver = $nodeNameResolver;
$this->nodeTypeResolver = $nodeTypeResolver;
$this->nodesToAddCollector = $nodesToAddCollector;
$this->nodesToRemoveCollector = $nodesToRemoveCollector;
$this->stringTypeAnalyzer = $stringTypeAnalyzer;
$this->valueResolver = $valueResolver;
$this->phpDocInfoFactory = $phpDocInfoFactory;
}
/**
* @return StaticCall|MethodCall
*/
public function processStaticCall(\PhpParser\Node\Expr\StaticCall $staticCall) : \PhpParser\Node\Expr
{
if ($this->nodeNameResolver->isNames($staticCall->name, ['truthy', 'falsey'])) {
return $this->processTruthyOrFalseyCall($staticCall);
}
if ($this->nodeNameResolver->isNames($staticCall->name, [self::CONTAINS, 'notContains'])) {
$this->processContainsCall($staticCall);
} elseif ($this->nodeNameResolver->isNames($staticCall->name, ['exception', 'throws'])) {
$this->processExceptionCall($staticCall);
} elseif ($this->nodeNameResolver->isName($staticCall->name, 'type')) {
$this->processTypeCall($staticCall);
} elseif ($this->nodeNameResolver->isName($staticCall->name, 'noError')) {
$this->processNoErrorCall($staticCall);
} else {
$this->renameAssertMethod($staticCall);
}
// self or class, depending on the context
// prefer $this->assertSame() as more conventional and explicit in class-context
if (!$this->sholdBeStaticCall($staticCall)) {
$methodCall = new \PhpParser\Node\Expr\MethodCall(new \PhpParser\Node\Expr\Variable(self::THIS), $staticCall->name);
$methodCall->args = $staticCall->args;
$methodCall->setAttributes($staticCall->getAttributes());
$methodCall->setAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::ORIGINAL_NODE, null);
return $methodCall;
}
$staticCall->class = new \PhpParser\Node\Name\FullyQualified('PHPUnit\\Framework\\Assert');
return $staticCall;
}
/**
* @return StaticCall|MethodCall
*/
private function processTruthyOrFalseyCall(\PhpParser\Node\Expr\StaticCall $staticCall) : \PhpParser\Node\Expr
{
$method = $this->nodeNameResolver->isName($staticCall->name, 'truthy') ? 'assertTrue' : 'assertFalse';
if (!$this->sholdBeStaticCall($staticCall)) {
$call = new \PhpParser\Node\Expr\MethodCall(new \PhpParser\Node\Expr\Variable(self::THIS), $method);
$call->args = $staticCall->args;
$call->setAttributes($staticCall->getAttributes());
$call->setAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::ORIGINAL_NODE, null);
} else {
$call = $staticCall;
$call->name = new \PhpParser\Node\Identifier($method);
}
if (!$this->nodeTypeResolver->isStaticType($staticCall->args[0]->value, \PHPStan\Type\BooleanType::class)) {
$call->args[0]->value = new \PhpParser\Node\Expr\Cast\Bool_($staticCall->args[0]->value);
}
return $call;
}
private function processContainsCall(\PhpParser\Node\Expr\StaticCall $staticCall) : void
{
if ($this->stringTypeAnalyzer->isStringOrUnionStringOnlyType($staticCall->args[1]->value)) {
$name = $this->nodeNameResolver->isName($staticCall->name, self::CONTAINS) ? 'assertStringContainsString' : 'assertStringNotContainsString';
} else {
$name = $this->nodeNameResolver->isName($staticCall->name, self::CONTAINS) ? 'assertContains' : 'assertNotContains';
}
$staticCall->name = new \PhpParser\Node\Identifier($name);
}
private function processExceptionCall(\PhpParser\Node\Expr\StaticCall $staticCall) : void
{
$method = 'expectException';
// expect exception
if ($this->sholdBeStaticCall($staticCall)) {
$expectException = new \PhpParser\Node\Expr\StaticCall(new \PhpParser\Node\Name(self::SELF), $method);
} else {
$expectException = new \PhpParser\Node\Expr\MethodCall(new \PhpParser\Node\Expr\Variable(self::THIS), $method);
}
$expectException->args[] = $staticCall->args[1];
$this->nodesToAddCollector->addNodeAfterNode($expectException, $staticCall);
// expect message
if (isset($staticCall->args[2])) {
$this->refactorExpectException($staticCall);
}
// expect code
if (isset($staticCall->args[3])) {
$this->refactorExpectExceptionCode($staticCall);
}
/** @var Closure $closure */
$closure = $staticCall->args[0]->value;
$this->nodesToAddCollector->addNodesAfterNode($closure->stmts, $staticCall);
$this->nodesToRemoveCollector->addNodeToRemove($staticCall);
}
private function processTypeCall(\PhpParser\Node\Expr\StaticCall $staticCall) : void
{
$value = $this->valueResolver->getValue($staticCall->args[0]->value);
if (isset(self::TYPE_TO_METHOD[$value])) {
$staticCall->name = new \PhpParser\Node\Identifier(self::TYPE_TO_METHOD[$value]);
unset($staticCall->args[0]);
$staticCall->args = \array_values($staticCall->args);
} elseif ($value === 'null') {
$staticCall->name = new \PhpParser\Node\Identifier('assertNull');
unset($staticCall->args[0]);
$staticCall->args = \array_values($staticCall->args);
} else {
$staticCall->name = new \PhpParser\Node\Identifier('assertInstanceOf');
}
}
private function processNoErrorCall(\PhpParser\Node\Expr\StaticCall $staticCall) : void
{
/** @var Closure $closure */
$closure = $staticCall->args[0]->value;
$this->nodesToAddCollector->addNodesAfterNode($closure->stmts, $staticCall);
$this->nodesToRemoveCollector->addNodeToRemove($staticCall);
$classMethod = $staticCall->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::METHOD_NODE);
if (!$classMethod instanceof \PhpParser\Node\Stmt\ClassMethod) {
return;
}
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($classMethod);
$phpDocInfo->addPhpDocTagNode(new \PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode('@doesNotPerformAssertions', new \PHPStan\PhpDocParser\Ast\PhpDoc\GenericTagValueNode('')));
}
private function renameAssertMethod(\PhpParser\Node\Expr\StaticCall $staticCall) : void
{
foreach (self::ASSERT_METHODS_REMAP as $oldMethod => $newMethod) {
if (!$this->nodeNameResolver->isName($staticCall->name, $oldMethod)) {
continue;
}
$staticCall->name = new \PhpParser\Node\Identifier($newMethod);
}
}
private function sholdBeStaticCall(\PhpParser\Node\Expr\StaticCall $staticCall) : bool
{
return !(bool) $staticCall->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NODE);
}
private function refactorExpectException(\PhpParser\Node\Expr\StaticCall $staticCall) : string
{
$method = 'expectExceptionMessage';
if ($this->sholdBeStaticCall($staticCall)) {
$expectExceptionMessage = new \PhpParser\Node\Expr\StaticCall(new \PhpParser\Node\Name(self::SELF), $method);
} else {
$expectExceptionMessage = new \PhpParser\Node\Expr\MethodCall(new \PhpParser\Node\Expr\Variable(self::THIS), $method);
}
$expectExceptionMessage->args[] = $staticCall->args[2];
$this->nodesToAddCollector->addNodeAfterNode($expectExceptionMessage, $staticCall);
return $method;
}
private function refactorExpectExceptionCode(\PhpParser\Node\Expr\StaticCall $staticCall) : void
{
if ($this->sholdBeStaticCall($staticCall)) {
$expectExceptionCode = new \PhpParser\Node\Expr\StaticCall(new \PhpParser\Node\Name(self::SELF), 'expectExceptionCode');
} else {
$expectExceptionCode = new \PhpParser\Node\Expr\MethodCall(new \PhpParser\Node\Expr\Variable(self::THIS), 'expectExceptionCode');
}
$expectExceptionCode->args[] = $staticCall->args[3];
$this->nodesToAddCollector->addNodeAfterNode($expectExceptionCode, $staticCall);
}
}

View File

@ -1,84 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Collector;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\NodeTraverser;
use PHPStan\Type\ObjectType;
use Rector\Core\PhpParser\Comparing\NodeComparator;
use Rector\NodeTypeResolver\NodeTypeResolver;
use RectorPrefix20210625\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser;
final class OnFormVariableMethodCallsCollector
{
/**
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
*/
private $simpleCallableNodeTraverser;
/**
* @var \Rector\NodeTypeResolver\NodeTypeResolver
*/
private $nodeTypeResolver;
/**
* @var \Rector\Core\PhpParser\Comparing\NodeComparator
*/
private $nodeComparator;
public function __construct(\RectorPrefix20210625\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser $simpleCallableNodeTraverser, \Rector\NodeTypeResolver\NodeTypeResolver $nodeTypeResolver, \Rector\Core\PhpParser\Comparing\NodeComparator $nodeComparator)
{
$this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
$this->nodeTypeResolver = $nodeTypeResolver;
$this->nodeComparator = $nodeComparator;
}
/**
* @return MethodCall[]
*/
public function collectFromClassMethod(\PhpParser\Node\Stmt\ClassMethod $classMethod) : array
{
$newFormVariable = $this->resolveNewFormVariable($classMethod);
if (!$newFormVariable instanceof \PhpParser\Node\Expr) {
return [];
}
return $this->collectOnFormVariableMethodCalls($classMethod, $newFormVariable);
}
/**
* Matches:
* $form = new Form;
*/
private function resolveNewFormVariable(\PhpParser\Node\Stmt\ClassMethod $classMethod) : ?\PhpParser\Node\Expr
{
$newFormVariable = null;
$this->simpleCallableNodeTraverser->traverseNodesWithCallable((array) $classMethod->getStmts(), function (\PhpParser\Node $node) use(&$newFormVariable) : ?int {
if (!$node instanceof \PhpParser\Node\Expr\Assign) {
return null;
}
if (!$this->nodeTypeResolver->isObjectType($node->expr, new \PHPStan\Type\ObjectType('Nette\\Application\\UI\\Form'))) {
return null;
}
$newFormVariable = $node->var;
return \PhpParser\NodeTraverser::STOP_TRAVERSAL;
});
return $newFormVariable;
}
/**
* @return MethodCall[]
*/
private function collectOnFormVariableMethodCalls(\PhpParser\Node\Stmt\ClassMethod $classMethod, \PhpParser\Node\Expr $expr) : array
{
$onFormVariableMethodCalls = [];
$this->simpleCallableNodeTraverser->traverseNodesWithCallable((array) $classMethod->getStmts(), function (\PhpParser\Node $node) use($expr, &$onFormVariableMethodCalls) {
if (!$node instanceof \PhpParser\Node\Expr\MethodCall) {
return null;
}
if (!$this->nodeComparator->areNodesEqual($node->var, $expr)) {
return null;
}
$onFormVariableMethodCalls[] = $node;
return null;
});
return $onFormVariableMethodCalls;
}
}

View File

@ -1,141 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\NodeAnalyzer;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\FunctionLike;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Else_;
use PhpParser\Node\Stmt\If_;
use PhpParser\Node\Stmt\Return_;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\Nette\NodeAnalyzer\ReturnAnalyzer;
use Rector\Nette\NodeAnalyzer\ThisTemplatePropertyFetchAnalyzer;
use Rector\NetteToSymfony\ValueObject\ClassMethodRender;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeNestingScope\ScopeNestingComparator;
use Rector\NodeNestingScope\ValueObject\ControlStructure;
use RectorPrefix20210625\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser;
final class ClassMethodRenderAnalyzer
{
/**
* @var Expr[]
*/
private $templateVariables = [];
/**
* @var Node[]
*/
private $nodesToRemove = [];
/**
* @var array<string, Assign[]>
*/
private $conditionalAssigns = [];
/**
* @var Expr[]
*/
private $templateFileExprs = [];
/**
* @var Return_|null
*/
private $lastReturn;
/**
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
*/
private $simpleCallableNodeTraverser;
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
/**
* @var \Rector\NodeNestingScope\ScopeNestingComparator
*/
private $scopeNestingComparator;
/**
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
/**
* @var \Rector\Nette\NodeAnalyzer\ThisTemplatePropertyFetchAnalyzer
*/
private $thisTemplatePropertyFetchAnalyzer;
/**
* @var \Rector\Nette\NodeAnalyzer\ReturnAnalyzer
*/
private $returnAnalyzer;
public function __construct(\RectorPrefix20210625\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser $simpleCallableNodeTraverser, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver, \Rector\NodeNestingScope\ScopeNestingComparator $scopeNestingComparator, \Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder, \Rector\Nette\NodeAnalyzer\ThisTemplatePropertyFetchAnalyzer $thisTemplatePropertyFetchAnalyzer, \Rector\Nette\NodeAnalyzer\ReturnAnalyzer $returnAnalyzer)
{
$this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
$this->nodeNameResolver = $nodeNameResolver;
$this->scopeNestingComparator = $scopeNestingComparator;
$this->betterNodeFinder = $betterNodeFinder;
$this->thisTemplatePropertyFetchAnalyzer = $thisTemplatePropertyFetchAnalyzer;
$this->returnAnalyzer = $returnAnalyzer;
}
public function collectFromClassMethod(\PhpParser\Node\Stmt\ClassMethod $classMethod) : \Rector\NetteToSymfony\ValueObject\ClassMethodRender
{
$this->templateFileExprs = [];
$this->templateVariables = [];
$this->nodesToRemove = [];
$this->conditionalAssigns = [];
$this->lastReturn = $this->returnAnalyzer->findLastClassMethodReturn($classMethod);
$this->simpleCallableNodeTraverser->traverseNodesWithCallable((array) $classMethod->stmts, function (\PhpParser\Node $node) : void {
if ($node instanceof \PhpParser\Node\Expr\MethodCall) {
$this->collectTemplateFileExpr($node);
}
if ($node instanceof \PhpParser\Node\Expr\Assign) {
$this->collectVariableFromAssign($node);
}
});
return new \Rector\NetteToSymfony\ValueObject\ClassMethodRender($this->templateFileExprs, $this->templateVariables, $this->nodesToRemove, $this->conditionalAssigns);
}
private function collectTemplateFileExpr(\PhpParser\Node\Expr\MethodCall $methodCall) : void
{
if (!$this->nodeNameResolver->isNames($methodCall->name, ['render', 'setFile'])) {
return;
}
$this->nodesToRemove[] = $methodCall;
if (!isset($methodCall->args[0])) {
return;
}
$this->templateFileExprs[] = $methodCall->args[0]->value;
}
private function collectVariableFromAssign(\PhpParser\Node\Expr\Assign $assign) : void
{
// $this->template = x
if ($assign->var instanceof \PhpParser\Node\Expr\PropertyFetch) {
$propertyFetch = $assign->var;
if (!$this->thisTemplatePropertyFetchAnalyzer->isTemplatePropertyFetch($propertyFetch->var)) {
return;
}
$variableName = $this->nodeNameResolver->getName($propertyFetch);
$foundParent = $this->betterNodeFinder->findParentTypes($propertyFetch->var, \Rector\NodeNestingScope\ValueObject\ControlStructure::CONDITIONAL_NODE_SCOPE_TYPES + [\PhpParser\Node\FunctionLike::class]);
if ($foundParent && $this->scopeNestingComparator->isInBothIfElseBranch($foundParent, $propertyFetch)) {
$this->conditionalAssigns[$variableName][] = $assign;
return;
}
if ($foundParent instanceof \PhpParser\Node\Stmt\If_) {
return;
}
if ($foundParent instanceof \PhpParser\Node\Stmt\Else_) {
return;
}
// there is a return before this assign, to do not remove it and keep ti
if (!$this->returnAnalyzer->isBeforeLastReturn($assign, $this->lastReturn)) {
return;
}
$this->templateVariables[$variableName] = $assign->expr;
$this->nodesToRemove[] = $assign;
return;
}
// $x = $this->template
if (!$this->thisTemplatePropertyFetchAnalyzer->isTemplatePropertyFetch($assign->expr)) {
return;
}
$this->nodesToRemove[] = $assign;
}
}

View File

@ -1,55 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\NodeFactory;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\BinaryOp\BooleanAnd;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Param;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Expression;
use PhpParser\Node\Stmt\If_;
use Rector\Core\PhpParser\Node\NodeFactory;
final class ActionWithFormProcessClassMethodFactory
{
/**
* @var \Rector\Core\PhpParser\Node\NodeFactory
*/
private $nodeFactory;
public function __construct(\Rector\Core\PhpParser\Node\NodeFactory $nodeFactory)
{
$this->nodeFactory = $nodeFactory;
}
public function create(string $formTypeClass) : \PhpParser\Node\Stmt\ClassMethod
{
$classMethod = $this->nodeFactory->createPublicMethod('actionSomeForm');
$requestVariable = new \PhpParser\Node\Expr\Variable('request');
$classMethod->params[] = new \PhpParser\Node\Param($requestVariable, null, new \PhpParser\Node\Name\FullyQualified('Symfony\\Component\\HttpFoundation\\Request'));
$classMethod->returnType = new \PhpParser\Node\Name\FullyQualified('Symfony\\Component\\HttpFoundation\\Response');
$formVariable = new \PhpParser\Node\Expr\Variable('form');
$assign = $this->createFormInstanceAssign($formTypeClass, $formVariable);
$classMethod->stmts[] = new \PhpParser\Node\Stmt\Expression($assign);
$handleRequestMethodCall = new \PhpParser\Node\Expr\MethodCall($formVariable, 'handleRequest', [new \PhpParser\Node\Arg($requestVariable)]);
$classMethod->stmts[] = new \PhpParser\Node\Stmt\Expression($handleRequestMethodCall);
$booleanAnd = $this->createFormIsSuccessAndIsValid($formVariable);
$classMethod->stmts[] = new \PhpParser\Node\Stmt\If_($booleanAnd);
return $classMethod;
}
private function createFormInstanceAssign(string $formTypeClass, \PhpParser\Node\Expr\Variable $formVariable) : \PhpParser\Node\Expr\Assign
{
$classConstFetch = $this->nodeFactory->createClassConstReference($formTypeClass);
$args = [new \PhpParser\Node\Arg($classConstFetch)];
$createFormMethodCall = new \PhpParser\Node\Expr\MethodCall(new \PhpParser\Node\Expr\Variable('this'), 'createForm', $args);
return new \PhpParser\Node\Expr\Assign($formVariable, $createFormMethodCall);
}
private function createFormIsSuccessAndIsValid(\PhpParser\Node\Expr\Variable $formVariable) : \PhpParser\Node\Expr\BinaryOp\BooleanAnd
{
$isSuccessMethodCall = new \PhpParser\Node\Expr\MethodCall($formVariable, 'isSuccess');
$isValidMethodCall = new \PhpParser\Node\Expr\MethodCall($formVariable, 'isValid');
return new \PhpParser\Node\Expr\BinaryOp\BooleanAnd($isSuccessMethodCall, $isValidMethodCall);
}
}

View File

@ -1,29 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\NodeFactory;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Param;
use PhpParser\Node\Stmt\ClassMethod;
use Rector\Core\PhpParser\Node\NodeFactory;
final class BuildFormClassMethodFactory
{
/**
* @var \Rector\Core\PhpParser\Node\NodeFactory
*/
private $nodeFactory;
public function __construct(\Rector\Core\PhpParser\Node\NodeFactory $nodeFactory)
{
$this->nodeFactory = $nodeFactory;
}
public function create(\PhpParser\Node\Expr\Variable $formBuilderVariable) : \PhpParser\Node\Stmt\ClassMethod
{
$buildFormClassMethod = $this->nodeFactory->createPublicMethod('buildForm');
$buildFormClassMethod->params[] = new \PhpParser\Node\Param($formBuilderVariable, null, new \PhpParser\Node\Name\FullyQualified('Symfony\\Component\\Form\\FormBuilderInterface'));
$buildFormClassMethod->params[] = new \PhpParser\Node\Param(new \PhpParser\Node\Expr\Variable('options'), null, new \PhpParser\Node\Identifier('array'));
return $buildFormClassMethod;
}
}

View File

@ -1,44 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\NodeFactory;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Namespace_;
use PHPStan\Analyser\Scope;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
final class SymfonyControllerFactory
{
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
/**
* @var \Rector\NetteToSymfony\NodeFactory\ActionWithFormProcessClassMethodFactory
*/
private $actionWithFormProcessClassMethodFactory;
public function __construct(\Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver, \Rector\NetteToSymfony\NodeFactory\ActionWithFormProcessClassMethodFactory $actionWithFormProcessClassMethodFactory)
{
$this->nodeNameResolver = $nodeNameResolver;
$this->actionWithFormProcessClassMethodFactory = $actionWithFormProcessClassMethodFactory;
}
public function createNamespace(\PhpParser\Node\Stmt\Class_ $node, \PhpParser\Node\Stmt\Class_ $formTypeClass) : ?\PhpParser\Node\Stmt\Namespace_
{
$scope = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::SCOPE);
if (!$scope instanceof \PHPStan\Analyser\Scope) {
return null;
}
/** @var string $namespaceName */
$namespaceName = $scope->getNamespace();
$formControllerClass = new \PhpParser\Node\Stmt\Class_('SomeFormController');
$formControllerClass->extends = new \PhpParser\Node\Name\FullyQualified('Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController');
$formTypeClass = $namespaceName . '\\' . $this->nodeNameResolver->getName($formTypeClass);
$formControllerClass->stmts[] = $this->actionWithFormProcessClassMethodFactory->create($formTypeClass);
$namespace = new \PhpParser\Node\Stmt\Namespace_(new \PhpParser\Node\Name($namespaceName));
$namespace->stmts[] = $formControllerClass;
return $namespace;
}
}

View File

@ -1,65 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\NodeFactory;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\Expression;
use Rector\Core\PhpParser\Node\NodeFactory;
use Rector\NodeNameResolver\NodeNameResolver;
use RectorPrefix20210625\Symfony\Component\Form\Extension\Core\Type\TextType;
final class SymfonyMethodCallsFactory
{
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
/**
* @var \Rector\Core\PhpParser\Node\NodeFactory
*/
private $nodeFactory;
public function __construct(\Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver, \Rector\Core\PhpParser\Node\NodeFactory $nodeFactory)
{
$this->nodeNameResolver = $nodeNameResolver;
$this->nodeFactory = $nodeFactory;
}
/**
* @param MethodCall[] $onFormVariableMethodCalls
* @return Expression[]
*/
public function create(array $onFormVariableMethodCalls, \PhpParser\Node\Expr\Variable $formBuilderVariable) : array
{
$symfonyMethodCalls = [];
// create symfony form from nette form method calls
foreach ($onFormVariableMethodCalls as $onFormVariableMethodCall) {
if (!$this->nodeNameResolver->isName($onFormVariableMethodCall->name, 'addText')) {
continue;
}
// text input
$inputName = $onFormVariableMethodCall->args[0];
$formTypeClassConstant = $this->nodeFactory->createClassConstReference(\RectorPrefix20210625\Symfony\Component\Form\Extension\Core\Type\TextType::class);
$args = $this->createAddTextArgs($inputName, $formTypeClassConstant, $onFormVariableMethodCall);
$methodCall = new \PhpParser\Node\Expr\MethodCall($formBuilderVariable, 'add', $args);
$symfonyMethodCalls[] = new \PhpParser\Node\Stmt\Expression($methodCall);
}
return $symfonyMethodCalls;
}
/**
* @return Arg[]
*/
private function createAddTextArgs(\PhpParser\Node\Arg $arg, \PhpParser\Node\Expr\ClassConstFetch $classConstFetch, \PhpParser\Node\Expr\MethodCall $onFormVariableMethodCall) : array
{
$args = [$arg, new \PhpParser\Node\Arg($classConstFetch)];
if (isset($onFormVariableMethodCall->args[1])) {
$optionsArray = new \PhpParser\Node\Expr\Array_([new \PhpParser\Node\Expr\ArrayItem($onFormVariableMethodCall->args[1]->value, new \PhpParser\Node\Scalar\String_('label'))]);
$args[] = new \PhpParser\Node\Arg($optionsArray);
}
return $args;
}
}

View File

@ -1,170 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Rector\ClassMethod;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Return_;
use PHPStan\Type\ObjectType;
use Rector\Core\Rector\AbstractRector;
use Rector\NetteToSymfony\ValueObject\EventInfo;
use Rector\NetteToSymfony\ValueObjectFactory\EventInfosFactory;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @changelog https://symfony.com/doc/current/components/http_kernel.html#creating-an-event-listener
*
* @see \Rector\NetteToSymfony\Tests\Rector\ClassMethod\RenameEventNamesInEventSubscriberRector\RenameEventNamesInEventSubscriberRectorTest
*/
final class RenameEventNamesInEventSubscriberRector extends \Rector\Core\Rector\AbstractRector
{
/**
* @var EventInfo[]
*/
private $symfonyClassConstWithAliases = [];
public function __construct(\Rector\NetteToSymfony\ValueObjectFactory\EventInfosFactory $eventInfosFactory)
{
$this->symfonyClassConstWithAliases = $eventInfosFactory->create();
}
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Changes event names from Nette ones to Symfony ones', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
final class SomeClass implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return ['nette.application' => 'someMethod'];
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
final class SomeClass implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [\SymfonyEvents::KERNEL => 'someMethod'];
}
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [\PhpParser\Node\Stmt\ClassMethod::class];
}
/**
* @param ClassMethod $node
*/
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
{
$classLike = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NODE);
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return null;
}
if (!$this->isObjectType($classLike, new \PHPStan\Type\ObjectType('Symfony\\Component\\EventDispatcher\\EventSubscriberInterface'))) {
return null;
}
if (!$this->isName($node, 'getSubscribedEvents')) {
return null;
}
/** @var Return_[] $returnNodes */
$returnNodes = $this->betterNodeFinder->findInstanceOf($node, \PhpParser\Node\Stmt\Return_::class);
foreach ($returnNodes as $returnNode) {
if (!$returnNode->expr instanceof \PhpParser\Node\Expr\Array_) {
continue;
}
$this->renameArrayKeys($returnNode);
}
return $node;
}
private function renameArrayKeys(\PhpParser\Node\Stmt\Return_ $return) : void
{
if (!$return->expr instanceof \PhpParser\Node\Expr\Array_) {
return;
}
foreach ($return->expr->items as $arrayItem) {
if ($arrayItem === null) {
continue;
}
$eventInfo = $this->matchStringKeys($arrayItem);
if (!$eventInfo instanceof \Rector\NetteToSymfony\ValueObject\EventInfo) {
$eventInfo = $this->matchClassConstKeys($arrayItem);
}
if (!$eventInfo instanceof \Rector\NetteToSymfony\ValueObject\EventInfo) {
continue;
}
$arrayItem->key = new \PhpParser\Node\Expr\ClassConstFetch(new \PhpParser\Node\Name\FullyQualified($eventInfo->getClass()), $eventInfo->getConstant());
// method name
$className = (string) $return->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NAME);
$methodName = (string) $this->valueResolver->getValue($arrayItem->value);
$this->processMethodArgument($className, $methodName, $eventInfo);
}
}
private function matchStringKeys(\PhpParser\Node\Expr\ArrayItem $arrayItem) : ?\Rector\NetteToSymfony\ValueObject\EventInfo
{
if (!$arrayItem->key instanceof \PhpParser\Node\Scalar\String_) {
return null;
}
foreach ($this->symfonyClassConstWithAliases as $symfonyClassConstWithAlias) {
foreach ($symfonyClassConstWithAlias->getOldStringAliases() as $netteStringName) {
if ($this->valueResolver->isValue($arrayItem->key, $netteStringName)) {
return $symfonyClassConstWithAlias;
}
}
}
return null;
}
private function matchClassConstKeys(\PhpParser\Node\Expr\ArrayItem $arrayItem) : ?\Rector\NetteToSymfony\ValueObject\EventInfo
{
if (!$arrayItem->key instanceof \PhpParser\Node\Expr\ClassConstFetch) {
return null;
}
foreach ($this->symfonyClassConstWithAliases as $symfonyClassConstWithAlias) {
$isMatch = $this->resolveClassConstAliasMatch($arrayItem, $symfonyClassConstWithAlias);
if ($isMatch) {
return $symfonyClassConstWithAlias;
}
}
return null;
}
private function processMethodArgument(string $class, string $method, \Rector\NetteToSymfony\ValueObject\EventInfo $eventInfo) : void
{
$classMethodNode = $this->nodeRepository->findClassMethod($class, $method);
if (!$classMethodNode instanceof \PhpParser\Node\Stmt\ClassMethod) {
return;
}
if (\count($classMethodNode->params) !== 1) {
return;
}
$classMethodNode->params[0]->type = new \PhpParser\Node\Name\FullyQualified($eventInfo->getEventClass());
}
private function resolveClassConstAliasMatch(\PhpParser\Node\Expr\ArrayItem $arrayItem, \Rector\NetteToSymfony\ValueObject\EventInfo $eventInfo) : bool
{
$classConstFetchNode = $arrayItem->key;
if (!$classConstFetchNode instanceof \PhpParser\Node\Expr) {
return \false;
}
foreach ($eventInfo->getOldClassConstAliases() as $netteClassConst) {
if ($this->isName($classConstFetchNode, $netteClassConst)) {
return \true;
}
}
return \false;
}
}

View File

@ -1,272 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Rector\ClassMethod;
use RectorPrefix20210625\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr\ArrayDimFetch;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PHPStan\Reflection\MethodReflection;
use PHPStan\Reflection\ReflectionProvider;
use PHPStan\Type\ObjectType;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\ValueObject\PhpDoc\DoctrineAnnotation\CurlyListNode;
use Rector\BetterPhpDocParser\ValueObjectFactory\PhpDocNode\Symfony\SymfonyRouteTagValueNodeFactory;
use Rector\Core\Rector\AbstractRector;
use Rector\NetteToSymfony\Route\RouteInfoFactory;
use Rector\NetteToSymfony\Routing\ExplicitRouteAnnotationDecorator;
use Rector\NetteToSymfony\ValueObject\RouteInfo;
use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
use RectorPrefix20210625\Stringy\Stringy;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @changelog https://doc.nette.org/en/2.4/routing, https://symfony.com/doc/current/routing.html
*
* @see \Rector\NetteToSymfony\Tests\Rector\ClassMethod\RouterListToControllerAnnotationsRector\RouterListToControllerAnnotationsRectorTest
*/
final class RouterListToControllerAnnotationsRector extends \Rector\Core\Rector\AbstractRector
{
/**
* @var string
* @see https://regex101.com/r/qVlXk2/2
*/
private const ACTION_RENDER_NAME_MATCHING_REGEX = '#^(action|render)(?<short_action_name>.*?$)#sm';
/**
* @var ObjectType[]
*/
private $routerObjectTypes = [];
/**
* @var ObjectType
*/
private $routeListObjectType;
/**
* @var \Rector\NetteToSymfony\Routing\ExplicitRouteAnnotationDecorator
*/
private $explicitRouteAnnotationDecorator;
/**
* @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer
*/
private $returnTypeInferer;
/**
* @var \Rector\NetteToSymfony\Route\RouteInfoFactory
*/
private $routeInfoFactory;
/**
* @var \Rector\BetterPhpDocParser\ValueObjectFactory\PhpDocNode\Symfony\SymfonyRouteTagValueNodeFactory
*/
private $symfonyRouteTagValueNodeFactory;
/**
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $reflectionProvider;
public function __construct(\Rector\NetteToSymfony\Routing\ExplicitRouteAnnotationDecorator $explicitRouteAnnotationDecorator, \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer $returnTypeInferer, \Rector\NetteToSymfony\Route\RouteInfoFactory $routeInfoFactory, \Rector\BetterPhpDocParser\ValueObjectFactory\PhpDocNode\Symfony\SymfonyRouteTagValueNodeFactory $symfonyRouteTagValueNodeFactory, \PHPStan\Reflection\ReflectionProvider $reflectionProvider)
{
$this->explicitRouteAnnotationDecorator = $explicitRouteAnnotationDecorator;
$this->returnTypeInferer = $returnTypeInferer;
$this->routeInfoFactory = $routeInfoFactory;
$this->symfonyRouteTagValueNodeFactory = $symfonyRouteTagValueNodeFactory;
$this->reflectionProvider = $reflectionProvider;
$this->routerObjectTypes = [new \PHPStan\Type\ObjectType('Nette\\Application\\IRouter'), new \PHPStan\Type\ObjectType('Nette\\Routing\\Router')];
$this->routeListObjectType = new \PHPStan\Type\ObjectType('Nette\\Application\\Routers\\RouteList');
}
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Change new Route() from RouteFactory to @Route annotation above controller method', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
final class RouterFactory
{
public function create(): RouteList
{
$routeList = new RouteList();
$routeList[] = new Route('some-path', SomePresenter::class);
return $routeList;
}
}
final class SomePresenter
{
public function run()
{
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
final class RouterFactory
{
public function create(): RouteList
{
$routeList = new RouteList();
// case of single action controller, usually get() or __invoke() method
$routeList[] = new Route('some-path', SomePresenter::class);
return $routeList;
}
}
use Symfony\Component\Routing\Annotation\Route;
final class SomePresenter
{
/**
* @Route(path="some-path")
*/
public function run()
{
}
}
CODE_SAMPLE
)]);
}
/**
* List of nodes this class checks, classes that implement @see \PhpParser\Node
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [\PhpParser\Node\Stmt\ClassMethod::class];
}
/**
* @param ClassMethod $node
*/
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
{
if ($node->stmts === []) {
return null;
}
$inferedReturnType = $this->returnTypeInferer->inferFunctionLike($node);
if (!$inferedReturnType->isSuperTypeOf($this->routeListObjectType)->yes()) {
return null;
}
$assignNodes = $this->resolveAssignRouteNodes($node);
if ($assignNodes === []) {
return null;
}
$routeInfos = $this->createRouteInfosFromAssignNodes($assignNodes);
/** @var RouteInfo $routeInfo */
foreach ($routeInfos as $routeInfo) {
$methodReflection = $this->resolveControllerClassMethod($routeInfo);
if (!$methodReflection instanceof \PhpParser\Node\Stmt\ClassMethod) {
continue;
}
$symfonyRoutePhpDocTagValueNode = $this->createSymfonyRoutePhpDocTagValueNode($routeInfo);
// @todo resolve in standalone rule while traversing via ClassMethod
$this->explicitRouteAnnotationDecorator->decorateClassMethodWithRouteAnnotation($methodReflection, $symfonyRoutePhpDocTagValueNode);
}
// complete all other non-explicit methods, from "<presenter>/<action>"
$this->completeImplicitRoutes();
// remove routes
$this->removeNodes($assignNodes);
return null;
}
/**
* @return Assign[]
*/
private function resolveAssignRouteNodes(\PhpParser\Node\Stmt\ClassMethod $classMethod) : array
{
// look for <...>[] = IRoute<Type>
return $this->betterNodeFinder->find((array) $classMethod->stmts, function (\PhpParser\Node $node) : bool {
if (!$node instanceof \PhpParser\Node\Expr\Assign) {
return \false;
}
// $routeList[] =
if (!$node->var instanceof \PhpParser\Node\Expr\ArrayDimFetch) {
return \false;
}
if ($this->nodeTypeResolver->isObjectTypes($node->expr, $this->routerObjectTypes)) {
return \true;
}
if ($node->expr instanceof \PhpParser\Node\Expr\StaticCall) {
// for custom static route factories
return $this->nodeTypeResolver->isObjectType($node->expr, new \PHPStan\Type\ObjectType('Nette\\Application\\IRouter'));
}
return \false;
});
}
/**
* @param Assign[] $assignNodes
* @return RouteInfo[]
*/
private function createRouteInfosFromAssignNodes(array $assignNodes) : array
{
$routeInfos = [];
// collect annotations and target controllers
foreach ($assignNodes as $assignNode) {
$routeNameToControllerMethod = $this->routeInfoFactory->createFromNode($assignNode->expr);
if (!$routeNameToControllerMethod instanceof \Rector\NetteToSymfony\ValueObject\RouteInfo) {
continue;
}
$routeInfos[] = $routeNameToControllerMethod;
}
return $routeInfos;
}
private function resolveControllerClassMethod(\Rector\NetteToSymfony\ValueObject\RouteInfo $routeInfo) : ?\PHPStan\Reflection\MethodReflection
{
if (!$this->reflectionProvider->hasClass($routeInfo->getClass())) {
return null;
}
$classReflection = $this->reflectionProvider->getClass($routeInfo->getClass());
return $classReflection->getNativeMethod($routeInfo->getMethod());
}
private function createSymfonyRoutePhpDocTagValueNode(\Rector\NetteToSymfony\ValueObject\RouteInfo $routeInfo) : \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode
{
$values = ['path' => '"' . $routeInfo->getPath() . '"'];
if ($routeInfo->getHttpMethods() !== []) {
$httpMethods = [];
foreach ($routeInfo->getHttpMethods() as $httpMethod) {
$httpMethods[] = '"' . $httpMethod . '"';
}
$values['methods'] = new \Rector\BetterPhpDocParser\ValueObject\PhpDoc\DoctrineAnnotation\CurlyListNode($httpMethods);
}
return $this->symfonyRouteTagValueNodeFactory->createFromItems($values);
}
private function completeImplicitRoutes() : void
{
$presenterClasses = $this->nodeRepository->findClassesBySuffix('Presenter');
foreach ($presenterClasses as $presenterClass) {
foreach ($presenterClass->getMethods() as $classMethod) {
if ($this->shouldSkipClassMethod($classMethod)) {
continue;
}
$path = $this->resolvePathFromClassAndMethodNodes($presenterClass, $classMethod);
$symfonyRoutePhpDocTagValueNode = $this->symfonyRouteTagValueNodeFactory->createFromItems(['path' => '"' . $path . '"']);
$this->explicitRouteAnnotationDecorator->decorateClassMethodWithRouteAnnotation($classMethod, $symfonyRoutePhpDocTagValueNode);
}
}
}
private function shouldSkipClassMethod(\PhpParser\Node\Stmt\ClassMethod $classMethod) : bool
{
// not an action method
if (!$classMethod->isPublic()) {
return \true;
}
if (!$this->isName($classMethod, '#^(render|action)#')) {
return \true;
}
$hasRouteAnnotation = $classMethod->getAttribute(\Rector\NetteToSymfony\Routing\ExplicitRouteAnnotationDecorator::HAS_ROUTE_ANNOTATION);
if ($hasRouteAnnotation) {
return \true;
}
// already has Route tag
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($classMethod);
return $phpDocInfo->hasByAnnotationClass('Symfony\\Component\\Routing\\Annotation\\Route');
}
private function resolvePathFromClassAndMethodNodes(\PhpParser\Node\Stmt\Class_ $class, \PhpParser\Node\Stmt\ClassMethod $classMethod) : string
{
/** @var string $presenterName */
$presenterName = $this->getName($class);
/** @var string $presenterPart */
$presenterPart = \RectorPrefix20210625\Nette\Utils\Strings::after($presenterName, '\\', -1);
$presenterPart = \RectorPrefix20210625\Nette\Utils\Strings::substring($presenterPart, 0, -\RectorPrefix20210625\Nette\Utils\Strings::length('Presenter'));
$stringy = new \RectorPrefix20210625\Stringy\Stringy($presenterPart);
$presenterPart = (string) $stringy->dasherize();
$match = (array) \RectorPrefix20210625\Nette\Utils\Strings::match($this->getName($classMethod), self::ACTION_RENDER_NAME_MATCHING_REGEX);
$actionPart = \lcfirst($match['short_action_name']);
return $presenterPart . '/' . $actionPart;
}
}

View File

@ -1,182 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Rector\Class_;
use RectorPrefix20210625\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Namespace_;
use PHPStan\Type\ObjectType;
use Rector\Core\Rector\AbstractRector;
use Rector\FileSystemRector\ValueObject\AddedFileWithNodes;
use Rector\NetteToSymfony\Collector\OnFormVariableMethodCallsCollector;
use Rector\NetteToSymfony\NodeFactory\BuildFormClassMethodFactory;
use Rector\NetteToSymfony\NodeFactory\SymfonyControllerFactory;
use Rector\NetteToSymfony\NodeFactory\SymfonyMethodCallsFactory;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ExtraFileCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @changelog https://symfony.com/doc/current/forms.html#creating-form-classes
*
* @see \Rector\NetteToSymfony\Tests\Rector\Class_\FormControlToControllerAndFormTypeRector\FormControlToControllerAndFormTypeRectorTest
*/
final class FormControlToControllerAndFormTypeRector extends \Rector\Core\Rector\AbstractRector
{
/**
* @var \Rector\NetteToSymfony\Collector\OnFormVariableMethodCallsCollector
*/
private $onFormVariableMethodCallsCollector;
/**
* @var \Rector\NetteToSymfony\NodeFactory\SymfonyControllerFactory
*/
private $symfonyControllerFactory;
/**
* @var \Rector\NetteToSymfony\NodeFactory\BuildFormClassMethodFactory
*/
private $buildFormClassMethodFactory;
/**
* @var \Rector\NetteToSymfony\NodeFactory\SymfonyMethodCallsFactory
*/
private $symfonyMethodCallsFactory;
public function __construct(\Rector\NetteToSymfony\Collector\OnFormVariableMethodCallsCollector $onFormVariableMethodCallsCollector, \Rector\NetteToSymfony\NodeFactory\SymfonyControllerFactory $symfonyControllerFactory, \Rector\NetteToSymfony\NodeFactory\BuildFormClassMethodFactory $buildFormClassMethodFactory, \Rector\NetteToSymfony\NodeFactory\SymfonyMethodCallsFactory $symfonyMethodCallsFactory)
{
$this->onFormVariableMethodCallsCollector = $onFormVariableMethodCallsCollector;
$this->symfonyControllerFactory = $symfonyControllerFactory;
$this->buildFormClassMethodFactory = $buildFormClassMethodFactory;
$this->symfonyMethodCallsFactory = $symfonyMethodCallsFactory;
}
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Change Form that extends Control to Controller and decoupled FormType', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\ExtraFileCodeSample(<<<'CODE_SAMPLE'
use Nette\Application\UI\Form;
use Nette\Application\UI\Control;
class SomeForm extends Control
{
public function createComponentForm()
{
$form = new Form();
$form->addText('name', 'Your name');
$form->onSuccess[] = [$this, 'processForm'];
}
public function processForm(Form $form)
{
// process me
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
final class SomeFormController extends AbstractController
{
/**
* @Route(...)
*/
public function actionSomeForm(Request $request): Response
{
$form = $this->createForm(SomeFormType::class);
$form->handleRequest($request);
if ($form->isSuccess() && $form->isValid()) {
// process me
}
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
<?php
namespace RectorPrefix20210625;
use RectorPrefix20210625\Symfony\Component\Form\AbstractType;
use RectorPrefix20210625\Symfony\Component\Form\Extension\Core\Type\TextType;
use RectorPrefix20210625\Symfony\Component\Form\FormBuilderInterface;
class SomeFormType extends \RectorPrefix20210625\Symfony\Component\Form\AbstractType
{
public function buildForm(\RectorPrefix20210625\Symfony\Component\Form\FormBuilderInterface $formBuilder, array $options)
{
$formBuilder->add('name', \RectorPrefix20210625\Symfony\Component\Form\Extension\Core\Type\TextType::class, ['label' => 'Your name']);
}
}
\class_alias('SomeFormType', 'SomeFormType', \false);
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
{
if (!$this->isObjectType($node, new \PHPStan\Type\ObjectType('Nette\\Application\\UI\\Control'))) {
return null;
}
foreach ($node->getMethods() as $classMethod) {
if (!$this->isName($classMethod->name, 'createComponent*')) {
continue;
}
$formTypeClass = $this->collectFormMethodCallsAndCreateFormTypeClass($classMethod);
if (!$formTypeClass instanceof \PhpParser\Node\Stmt\Class_) {
continue;
}
$symfonyControllerNamespace = $this->symfonyControllerFactory->createNamespace($node, $formTypeClass);
if (!$symfonyControllerNamespace instanceof \PhpParser\Node\Stmt\Namespace_) {
continue;
}
$shortClassName = $this->resolveControllerClassName($node);
$smartFileInfo = $this->file->getSmartFileInfo();
$directory = $smartFileInfo->getPath();
$controllerFilePath = $directory . '/' . $shortClassName . '.php';
$addedFileWithNodes = new \Rector\FileSystemRector\ValueObject\AddedFileWithNodes($controllerFilePath, [$symfonyControllerNamespace]);
$this->removedAndAddedFilesCollector->addAddedFile($addedFileWithNodes);
return $formTypeClass;
}
return null;
}
private function collectFormMethodCallsAndCreateFormTypeClass(\PhpParser\Node\Stmt\ClassMethod $classMethod) : ?\PhpParser\Node\Stmt\Class_
{
$onFormVariableMethodCalls = $this->onFormVariableMethodCallsCollector->collectFromClassMethod($classMethod);
if ($onFormVariableMethodCalls === []) {
return null;
}
$formBuilderVariable = new \PhpParser\Node\Expr\Variable('formBuilder');
// public function buildForm(\Symfony\Component\Form\FormBuilderInterface $formBuilder, array $options)
$buildFormClassMethod = $this->buildFormClassMethodFactory->create($formBuilderVariable);
$symfonyMethodCalls = $this->symfonyMethodCallsFactory->create($onFormVariableMethodCalls, $formBuilderVariable);
$buildFormClassMethod->stmts = $symfonyMethodCalls;
return $this->createFormTypeClassFromBuildFormClassMethod($buildFormClassMethod);
}
private function createFormTypeClassFromBuildFormClassMethod(\PhpParser\Node\Stmt\ClassMethod $buildFormClassMethod) : \PhpParser\Node\Stmt\Class_
{
$formTypeClass = new \PhpParser\Node\Stmt\Class_('SomeFormType');
$formTypeClass->flags |= \PhpParser\Node\Stmt\Class_::MODIFIER_FINAL;
$formTypeClass->extends = new \PhpParser\Node\Name\FullyQualified('Symfony\\Component\\Form\\AbstractType');
$formTypeClass->stmts[] = $buildFormClassMethod;
return $formTypeClass;
}
private function resolveControllerClassName(\PhpParser\Node\Stmt\Class_ $class) : string
{
$shortClassName = $this->nodeNameResolver->getShortName($class);
if (\substr_compare($shortClassName, 'Form', -\strlen('Form')) === 0) {
$shortClassName = \RectorPrefix20210625\Nette\Utils\Strings::before($shortClassName, 'Form');
} else {
$shortClassName = \RectorPrefix20210625\Nette\Utils\Strings::before($shortClassName, 'Control');
}
return $shortClassName . 'Controller';
}
}

View File

@ -1,147 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Rector\Class_;
use PhpParser\Node;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Return_;
use Rector\CodingStyle\Naming\ClassNaming;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\Nette\NodeAnalyzer\NetteClassAnalyzer;
use Rector\Nette\NodeFactory\ActionRenderFactory;
use Rector\NetteToSymfony\NodeAnalyzer\ClassMethodRenderAnalyzer;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @changelog https://doc.nette.org/en/2.4/components https://symfony.com/doc/current/controller.html
*
* @see \Rector\NetteToSymfony\Tests\Rector\Class_\NetteControlToSymfonyControllerRector\NetteControlToSymfonyControllerRectorTest
*/
final class NetteControlToSymfonyControllerRector extends \Rector\Core\Rector\AbstractRector
{
/**
* @var \Rector\Nette\NodeFactory\ActionRenderFactory
*/
private $actionRenderFactory;
/**
* @var \Rector\Nette\NodeAnalyzer\NetteClassAnalyzer
*/
private $netteClassAnalyzer;
/**
* @var \Rector\CodingStyle\Naming\ClassNaming
*/
private $classNaming;
/**
* @var \Rector\NetteToSymfony\NodeAnalyzer\ClassMethodRenderAnalyzer
*/
private $classMethodRenderAnalyzer;
public function __construct(\Rector\Nette\NodeFactory\ActionRenderFactory $actionRenderFactory, \Rector\Nette\NodeAnalyzer\NetteClassAnalyzer $netteClassAnalyzer, \Rector\CodingStyle\Naming\ClassNaming $classNaming, \Rector\NetteToSymfony\NodeAnalyzer\ClassMethodRenderAnalyzer $classMethodRenderAnalyzer)
{
$this->actionRenderFactory = $actionRenderFactory;
$this->netteClassAnalyzer = $netteClassAnalyzer;
$this->classNaming = $classNaming;
$this->classMethodRenderAnalyzer = $classMethodRenderAnalyzer;
}
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Migrate Nette Component to Symfony Controller', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
use Nette\Application\UI\Control;
class SomeControl extends Control
{
public function render()
{
$this->template->param = 'some value';
$this->template->render(__DIR__ . '/poll.latte');
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class SomeController extends AbstractController
{
public function some(): Response
{
return $this->render(__DIR__ . '/poll.latte', ['param' => 'some value']);
}
}
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
{
if (!$this->netteClassAnalyzer->isInComponent($node)) {
return null;
}
$shortClassName = $this->nodeNameResolver->getShortName($node);
$shortClassName = $this->classNaming->replaceSuffix($shortClassName, 'Control', 'Controller');
$node->name = new \PhpParser\Node\Identifier($shortClassName);
$node->extends = new \PhpParser\Node\Name\FullyQualified('Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController');
$classMethod = $node->getMethod('render');
if ($classMethod !== null) {
$this->processRenderMethod($classMethod);
}
return $node;
}
private function processRenderMethod(\PhpParser\Node\Stmt\ClassMethod $classMethod) : void
{
$this->processGetPresenterGetSessionMethodCall($classMethod);
$classMethod->name = new \PhpParser\Node\Identifier('action');
$classMethodRender = $this->classMethodRenderAnalyzer->collectFromClassMethod($classMethod);
$methodCall = $this->actionRenderFactory->createThisRenderMethodCall($classMethodRender);
// add return in the end
$return = new \PhpParser\Node\Stmt\Return_($methodCall);
$classMethod->stmts[] = $return;
if ($this->isAtLeastPhpVersion(\Rector\Core\ValueObject\PhpVersionFeature::SCALAR_TYPES)) {
$classMethod->returnType = new \PhpParser\Node\Name\FullyQualified('Symfony\\Component\\HttpFoundation\\Response');
}
$this->removeNodes($classMethodRender->getNodesToRemove());
}
private function processGetPresenterGetSessionMethodCall(\PhpParser\Node\Stmt\ClassMethod $classMethod) : void
{
$this->traverseNodesWithCallable((array) $classMethod->getStmts(), function (\PhpParser\Node $node) : ?MethodCall {
if (!$node instanceof \PhpParser\Node\Expr\MethodCall) {
return null;
}
if (!$this->isName($node->name, 'getSession')) {
return null;
}
if (!$node->var instanceof \PhpParser\Node\Expr\MethodCall) {
return null;
}
if (!$this->isName($node->var->name, 'getPresenter')) {
return null;
}
$node->var = new \PhpParser\Node\Expr\PropertyFetch(new \PhpParser\Node\Expr\Variable('this'), 'session');
$classLike = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NODE);
if (!$classLike instanceof \PhpParser\Node\Stmt\Class_) {
throw new \Rector\Core\Exception\ShouldNotHappenException();
}
$this->addConstructorDependencyToClass($classLike, new \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType('Nette\\Http\\Session'), 'session');
return $node;
});
}
}

View File

@ -1,118 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Rector\Class_;
use PhpParser\Node;
use PhpParser\Node\Expr\Include_;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassLike;
use PHPStan\Type\ObjectType;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\MethodName;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \Rector\NetteToSymfony\Tests\Rector\Class_\NetteTesterClassToPHPUnitClassRector\NetteTesterClassToPHPUnitClassRectorTest
*/
final class NetteTesterClassToPHPUnitClassRector extends \Rector\Core\Rector\AbstractRector
{
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Migrate Nette Tester test case to PHPUnit', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
namespace KdybyTests\Doctrine;
use Tester\TestCase;
use Tester\Assert;
require_once __DIR__ . '/../bootstrap.php';
class ExtensionTest extends TestCase
{
public function testFunctionality()
{
Assert::true($default instanceof Kdyby\Doctrine\EntityManager);
Assert::true(5);
Assert::same($container->getService('kdyby.doctrine.default.entityManager'), $default);
}
}
(new \ExtensionTest())->run();
CODE_SAMPLE
, <<<'CODE_SAMPLE'
namespace KdybyTests\Doctrine;
use Tester\TestCase;
use Tester\Assert;
class ExtensionTest extends \PHPUnit\Framework\TestCase
{
public function testFunctionality()
{
$this->assertInstanceOf(\Kdyby\Doctrine\EntityManager::cllass, $default);
$this->assertTrue(5);
$this->same($container->getService('kdyby.doctrine.default.entityManager'), $default);
}
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [\PhpParser\Node\Stmt\Class_::class, \PhpParser\Node\Expr\Include_::class, \PhpParser\Node\Expr\MethodCall::class];
}
/**
* @param Class_|Include_|MethodCall $node
*/
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
{
if ($node instanceof \PhpParser\Node\Expr\Include_) {
$this->processAboveTestInclude($node);
return null;
}
if ($node instanceof \PhpParser\Node\Expr\MethodCall) {
$this->processUnderTestRun($node);
return null;
}
if (!$this->isObjectType($node, new \PHPStan\Type\ObjectType('Tester\\TestCase'))) {
return null;
}
$this->processExtends($node);
$this->processMethods($node);
return $node;
}
private function processAboveTestInclude(\PhpParser\Node\Expr\Include_ $include) : void
{
$classLike = $include->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NODE);
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
$this->removeNode($include);
}
}
private function processUnderTestRun(\PhpParser\Node\Expr\MethodCall $methodCall) : void
{
if (!$this->isObjectType($methodCall->var, new \PHPStan\Type\ObjectType('Tester\\TestCase'))) {
return;
}
if ($this->isName($methodCall->name, 'run')) {
$this->removeNode($methodCall);
}
}
private function processExtends(\PhpParser\Node\Stmt\Class_ $class) : void
{
$class->extends = new \PhpParser\Node\Name\FullyQualified('PHPUnit\\Framework\\TestCase');
}
private function processMethods(\PhpParser\Node\Stmt\Class_ $class) : void
{
foreach ($class->getMethods() as $classMethod) {
if ($this->isNames($classMethod, [\Rector\Core\ValueObject\MethodName::SET_UP, \Rector\Core\ValueObject\MethodName::TEAR_DOWN])) {
$this->visibilityManipulator->makeProtected($classMethod);
}
}
}
}

View File

@ -1,85 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Rector\Class_;
use RectorPrefix20210625\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Stmt\Class_;
use Rector\Core\Rector\AbstractRector;
use Rector\FileSystemRector\ValueObject\AddedFileWithContent;
use Rector\PSR4\FileInfoAnalyzer\FileInfoDeletionAnalyzer;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \Rector\NetteToSymfony\Tests\Rector\Class_\RenameTesterTestToPHPUnitToTestFileRector\RenameTesterTestToPHPUnitToTestFileRectorTest
*/
final class RenameTesterTestToPHPUnitToTestFileRector extends \Rector\Core\Rector\AbstractRector
{
/**
* @var string
* @see https://regex101.com/r/ioamnE/1
*/
private const PHP_SUFFIX_REGEX = '#\\.php$#';
/**
* @var string
* @see https://regex101.com/r/cOMZIj/1
*/
private const PHPT_SUFFIX_REGEX = '#\\.phpt$#';
/**
* @var \Rector\PSR4\FileInfoAnalyzer\FileInfoDeletionAnalyzer
*/
private $fileInfoDeletionAnalyzer;
public function __construct(\Rector\PSR4\FileInfoAnalyzer\FileInfoDeletionAnalyzer $fileInfoDeletionAnalyzer)
{
$this->fileInfoDeletionAnalyzer = $fileInfoDeletionAnalyzer;
}
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Rename "*.phpt" file to "*Test.php" file', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
// tests/SomeTestCase.phpt
CODE_SAMPLE
, <<<'CODE_SAMPLE'
// tests/SomeTestCase.php
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
{
$smartFileInfo = $this->file->getSmartFileInfo();
$oldRealPath = $smartFileInfo->getRealPath();
if (!\RectorPrefix20210625\Nette\Utils\Strings::endsWith($oldRealPath, '.phpt')) {
return null;
}
$newRealPath = $this->createNewRealPath($oldRealPath);
if ($newRealPath === $oldRealPath) {
return null;
}
$this->removedAndAddedFilesCollector->removeFile($smartFileInfo);
$addedFileWithContent = new \Rector\FileSystemRector\ValueObject\AddedFileWithContent($newRealPath, $smartFileInfo->getContents());
$this->removedAndAddedFilesCollector->addAddedFile($addedFileWithContent);
return null;
}
private function createNewRealPath(string $oldRealPath) : string
{
// file suffix
$newRealPath = \RectorPrefix20210625\Nette\Utils\Strings::replace($oldRealPath, self::PHPT_SUFFIX_REGEX, '.php');
// cleanup tests prefix
$newRealPath = $this->fileInfoDeletionAnalyzer->clearNameFromTestingPrefix($newRealPath);
// Test suffix
if (!\RectorPrefix20210625\Nette\Utils\Strings::endsWith($newRealPath, 'Test.php')) {
return \RectorPrefix20210625\Nette\Utils\Strings::replace($newRealPath, self::PHP_SUFFIX_REGEX, 'Test.php');
}
return $newRealPath;
}
}

View File

@ -1,56 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Rector\Interface_;
use PhpParser\Node;
use PhpParser\Node\Stmt\Interface_;
use Rector\Core\Rector\AbstractRector;
use Rector\NetteToSymfony\NodeAnalyzer\NetteControlFactoryInterfaceAnalyzer;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \Rector\NetteToSymfony\Tests\Rector\Interface_\DeleteFactoryInterfaceRector\DeleteFactoryInterfaceFileSystemRectorTest
*/
final class DeleteFactoryInterfaceRector extends \Rector\Core\Rector\AbstractRector
{
/**
* @var \Rector\NetteToSymfony\NodeAnalyzer\NetteControlFactoryInterfaceAnalyzer
*/
private $netteControlFactoryInterfaceAnalyzer;
public function __construct(\Rector\NetteToSymfony\NodeAnalyzer\NetteControlFactoryInterfaceAnalyzer $netteControlFactoryInterfaceAnalyzer)
{
$this->netteControlFactoryInterfaceAnalyzer = $netteControlFactoryInterfaceAnalyzer;
}
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Interface factories are not needed in Symfony. Clear constructor injection is used instead', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
interface SomeControlFactoryInterface
{
public function create();
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [\PhpParser\Node\Stmt\Interface_::class];
}
/**
* @param Interface_ $node
*/
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
{
if (!$this->netteControlFactoryInterfaceAnalyzer->isComponentFactoryInterface($node)) {
return null;
}
$smartFileInfo = $this->file->getSmartFileInfo();
$this->removedAndAddedFilesCollector->removeFile($smartFileInfo);
return null;
}
}

View File

@ -1,82 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Rector\MethodCall;
use PhpParser\Node;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Identifier;
use PHPStan\Type\ObjectType;
use Rector\Core\NodeManipulator\ClassMethodManipulator;
use Rector\Core\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @changelog https://doc.nette.org/en/2.4/http-request-response https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/Request.php
*
* @see \Rector\NetteToSymfony\Tests\Rector\MethodCall\FromHttpRequestGetHeaderToHeadersGetRector\FromHttpRequestGetHeaderToHeadersGetRectorTest
*/
final class FromHttpRequestGetHeaderToHeadersGetRector extends \Rector\Core\Rector\AbstractRector
{
/**
* @var \Rector\Core\NodeManipulator\ClassMethodManipulator
*/
private $classMethodManipulator;
public function __construct(\Rector\Core\NodeManipulator\ClassMethodManipulator $classMethodManipulator)
{
$this->classMethodManipulator = $classMethodManipulator;
}
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Changes getHeader() to $request->headers->get()', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
use Nette\Request;
final class SomeController
{
public static function someAction(Request $request)
{
$header = $this->httpRequest->getHeader('x');
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Nette\Request;
final class SomeController
{
public static function someAction(Request $request)
{
$header = $request->headers->get('x');
}
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [\PhpParser\Node\Expr\MethodCall::class];
}
/**
* @param MethodCall $node
*/
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
{
if (!$this->isObjectType($node->var, new \PHPStan\Type\ObjectType('Nette\\Http\\Request'))) {
return null;
}
if (!$this->isName($node->name, 'getHeader')) {
return null;
}
$requestName = $this->classMethodManipulator->addMethodParameterIfMissing($node, new \PHPStan\Type\ObjectType('Symfony\\Component\\HttpFoundation\\Request'), ['request', 'symfonyRequest']);
$variable = new \PhpParser\Node\Expr\Variable($requestName);
$headersPropertyFetch = new \PhpParser\Node\Expr\PropertyFetch($variable, 'headers');
$node->var = $headersPropertyFetch;
$node->name = new \PhpParser\Node\Identifier('get');
return $node;
}
}

View File

@ -1,71 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Rector\MethodCall;
use RectorPrefix20210625\Nette\Application\Request;
use PhpParser\Node;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Identifier;
use PHPStan\Type\ObjectType;
use Rector\Core\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @changelog https://doc.nette.org/en/2.4/http-request-response https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/Request.php
*
* @see \Rector\NetteToSymfony\Tests\Rector\MethodCall\FromRequestGetParameterToAttributesGetRector\FromRequestGetParameterToAttributesGetRectorTest
*/
final class FromRequestGetParameterToAttributesGetRector extends \Rector\Core\Rector\AbstractRector
{
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Changes "getParameter()" to "attributes->get()" from Nette to Symfony', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
use Nette\Request;
final class SomeController
{
public static function someAction(Request $request)
{
$value = $request->getParameter('abz');
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Nette\Request;
final class SomeController
{
public static function someAction(Request $request)
{
$value = $request->attribute->get('abz');
}
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [\PhpParser\Node\Expr\MethodCall::class];
}
/**
* @param MethodCall $node
*/
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
{
if (!$this->isObjectType($node->var, new \PHPStan\Type\ObjectType('Nette\\Application\\Request'))) {
return null;
}
if (!$this->isName($node->name, 'getParameter')) {
return null;
}
$requestAttributesPropertyFetch = new \PhpParser\Node\Expr\PropertyFetch($node->var, 'attributes');
$node->var = $requestAttributesPropertyFetch;
$node->name = new \PhpParser\Node\Identifier('get');
return $node;
}
}

View File

@ -1,151 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Rector\MethodCall;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\New_;
use PhpParser\Node\Identifier;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\ClassLike;
use PHPStan\Type\ObjectType;
use Rector\Core\Rector\AbstractRector;
use Rector\NetteToSymfony\ValueObject\NetteFormMethodToSymfonyTypeClass;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @changelog https://doc.nette.org/en/2.4/forms https://symfony.com/doc/current/forms.html
*
* @see \Rector\NetteToSymfony\Tests\Rector\MethodCall\NetteFormToSymfonyFormRector\NetteFormToSymfonyFormRectorTest
*/
final class NetteFormToSymfonyFormRector extends \Rector\Core\Rector\AbstractRector
{
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Migrate Nette\\Forms in Presenter to Symfony', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
use Nette\Application\UI\Presenter;
final class SomePresenter extends Presenter
{
public function someAction()
{
$form = new UI\Form;
$form->addText('name', 'Name:');
$form->addSubmit('login', 'Sign up');
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Nette\Application\UI\Presenter;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
final class SomePresenter extends Presenter
{
public function someAction()
{
$form = $this->createFormBuilder();
$form->add('name', TextType::class, [
'label' => 'Name:'
]);
$form->add('login', SubmitType::class, [
'label' => 'Sign up'
]);
}
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [\PhpParser\Node\Expr\New_::class, \PhpParser\Node\Expr\MethodCall::class];
}
/**
* @param New_|MethodCall $node
*/
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
{
$classLike = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CLASS_NODE);
if (!$classLike instanceof \PhpParser\Node\Stmt\ClassLike) {
return null;
}
if (!$this->isObjectType($classLike, new \PHPStan\Type\ObjectType('Nette\\Application\\IPresenter'))) {
return null;
}
if ($node instanceof \PhpParser\Node\Expr\New_) {
return $this->processNew($node);
}
/** @var MethodCall $node */
if (!$this->isObjectType($node->var, new \PHPStan\Type\ObjectType('Nette\\Application\\UI\\Form'))) {
return null;
}
foreach (\Rector\NetteToSymfony\ValueObject\NetteFormMethodToSymfonyTypeClass::ADD_METHOD_TO_FORM_TYPE as $method => $classType) {
if (!$this->isName($node->name, $method)) {
continue;
}
$this->processAddMethod($node, $method, $classType);
}
return $node;
}
private function processNew(\PhpParser\Node\Expr\New_ $new) : ?\PhpParser\Node\Expr\MethodCall
{
if (!$this->isName($new->class, 'Nette\\Application\\UI\\Form')) {
return null;
}
return $this->nodeFactory->createMethodCall('this', 'createFormBuilder');
}
private function processAddMethod(\PhpParser\Node\Expr\MethodCall $methodCall, string $method, string $classType) : void
{
$methodCall->name = new \PhpParser\Node\Identifier('add');
// remove unused params
if ($method === 'addText') {
unset($methodCall->args[3], $methodCall->args[4]);
}
// has label
$optionsArray = new \PhpParser\Node\Expr\Array_();
if (isset($methodCall->args[1])) {
$optionsArray->items[] = new \PhpParser\Node\Expr\ArrayItem($methodCall->args[1]->value, new \PhpParser\Node\Scalar\String_('label'));
}
$this->addChoiceTypeOptions($method, $optionsArray);
$this->addMultiFileTypeOptions($method, $optionsArray);
$methodCall->args[1] = new \PhpParser\Node\Arg($this->nodeFactory->createClassConstReference($classType));
if ($optionsArray->items !== []) {
$methodCall->args[2] = new \PhpParser\Node\Arg($optionsArray);
}
}
private function addChoiceTypeOptions(string $method, \PhpParser\Node\Expr\Array_ $optionsArray) : void
{
if ($method === 'addSelect') {
$expanded = \false;
$multiple = \false;
} elseif ($method === 'addRadioList') {
$expanded = \true;
$multiple = \false;
} elseif ($method === 'addCheckboxList') {
$expanded = \true;
$multiple = \true;
} elseif ($method === 'addMultiSelect') {
$expanded = \false;
$multiple = \true;
} else {
return;
}
$optionsArray->items[] = new \PhpParser\Node\Expr\ArrayItem($expanded ? $this->nodeFactory->createTrue() : $this->nodeFactory->createFalse(), new \PhpParser\Node\Scalar\String_('expanded'));
$optionsArray->items[] = new \PhpParser\Node\Expr\ArrayItem($multiple ? $this->nodeFactory->createTrue() : $this->nodeFactory->createFalse(), new \PhpParser\Node\Scalar\String_('multiple'));
}
private function addMultiFileTypeOptions(string $method, \PhpParser\Node\Expr\Array_ $optionsArray) : void
{
if ($method !== 'addMultiUpload') {
return;
}
$optionsArray->items[] = new \PhpParser\Node\Expr\ArrayItem($this->nodeFactory->createTrue(), new \PhpParser\Node\Scalar\String_('multiple'));
}
}

View File

@ -1,63 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Rector\StaticCall;
use PhpParser\Node;
use PhpParser\Node\Expr\StaticCall;
use PHPStan\Type\ObjectType;
use Rector\Core\Rector\AbstractRector;
use Rector\NetteToSymfony\AssertManipulator;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see \Rector\NetteToSymfony\Tests\Rector\Class_\NetteTesterClassToPHPUnitClassRector\NetteTesterClassToPHPUnitClassRectorTest
*/
final class NetteAssertToPHPUnitAssertRector extends \Rector\Core\Rector\AbstractRector
{
/**
* @var \Rector\NetteToSymfony\AssertManipulator
*/
private $assertManipulator;
public function __construct(\Rector\NetteToSymfony\AssertManipulator $assertManipulator)
{
$this->assertManipulator = $assertManipulator;
}
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Migrate Nette/Assert calls to PHPUnit', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
use Tester\Assert;
function someStaticFunctions()
{
Assert::true(10 == 5);
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Tester\Assert;
function someStaticFunctions()
{
\PHPUnit\Framework\Assert::assertTrue(10 == 5);
}
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
{
if (!$this->isObjectType($node->class, new \PHPStan\Type\ObjectType('Tester\\Assert'))) {
return null;
}
return $this->assertManipulator->processStaticCall($node);
}
}

View File

@ -1,168 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Route;
use RectorPrefix20210625\Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Expr\New_;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\Class_;
use PHPStan\Reflection\ReflectionProvider;
use Rector\Core\PhpParser\Node\Value\ValueResolver;
use Rector\NetteToSymfony\ValueObject\RouteInfo;
use Rector\NodeCollector\NodeCollector\NodeRepository;
use Rector\NodeNameResolver\NodeNameResolver;
final class RouteInfoFactory
{
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
/**
* @var \Rector\NodeCollector\NodeCollector\NodeRepository
*/
private $nodeRepository;
/**
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
*/
private $valueResolver;
/**
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $reflectionProvider;
public function __construct(\Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver, \Rector\NodeCollector\NodeCollector\NodeRepository $nodeRepository, \Rector\Core\PhpParser\Node\Value\ValueResolver $valueResolver, \PHPStan\Reflection\ReflectionProvider $reflectionProvider)
{
$this->nodeNameResolver = $nodeNameResolver;
$this->nodeRepository = $nodeRepository;
$this->valueResolver = $valueResolver;
$this->reflectionProvider = $reflectionProvider;
}
public function createFromNode(\PhpParser\Node $node) : ?\Rector\NetteToSymfony\ValueObject\RouteInfo
{
if ($node instanceof \PhpParser\Node\Expr\New_) {
if ($this->hasNoArg($node)) {
return null;
}
return $this->createRouteInfoFromArgs($node);
}
// Route::create()
if ($node instanceof \PhpParser\Node\Expr\StaticCall) {
if (!isset($node->args[0])) {
return null;
}
if (!isset($node->args[1])) {
return null;
}
if (!$this->nodeNameResolver->isNames($node->name, ['get', 'head', 'post', 'put', 'patch', 'delete'])) {
return null;
}
/** @var string $methodName */
$methodName = $this->nodeNameResolver->getName($node->name);
$uppercasedMethodName = \strtoupper($methodName);
$methods = [];
if ($uppercasedMethodName !== null) {
$methods[] = $uppercasedMethodName;
}
return $this->createRouteInfoFromArgs($node, $methods);
}
return null;
}
private function hasNoArg(\PhpParser\Node\Expr\New_ $new) : bool
{
if (!isset($new->args[0])) {
return \true;
}
return !isset($new->args[1]);
}
/**
* @param New_|StaticCall $node
* @param string[] $methods
*/
private function createRouteInfoFromArgs(\PhpParser\Node $node, array $methods = []) : ?\Rector\NetteToSymfony\ValueObject\RouteInfo
{
$pathArgument = $node->args[0]->value;
$routePath = $this->valueResolver->getValue($pathArgument);
// route path is needed
if ($routePath === null) {
return null;
}
if (!\is_string($routePath)) {
return null;
}
$routePath = $this->normalizeArgumentWrappers($routePath);
$targetNode = $node->args[1]->value;
if ($targetNode instanceof \PhpParser\Node\Expr\ClassConstFetch) {
return $this->createForClassConstFetch($node, $methods, $routePath);
}
if ($targetNode instanceof \PhpParser\Node\Scalar\String_) {
return $this->createForString($targetNode, $routePath);
}
return null;
}
private function normalizeArgumentWrappers(string $routePath) : string
{
return \str_replace(['<', '>'], ['{', '}'], $routePath);
}
/**
* @param New_|StaticCall $node
* @param string[] $methods
*/
private function createForClassConstFetch(\PhpParser\Node $node, array $methods, string $routePath) : ?\Rector\NetteToSymfony\ValueObject\RouteInfo
{
/** @var ClassConstFetch $controllerMethodNode */
$controllerMethodNode = $node->args[1]->value;
// SomePresenter::class
if ($this->nodeNameResolver->isName($controllerMethodNode->name, 'class')) {
$presenterClass = $this->nodeNameResolver->getName($controllerMethodNode->class);
if ($presenterClass === null) {
return null;
}
if (!$this->reflectionProvider->hasClass($presenterClass)) {
return null;
}
$classReflection = $this->reflectionProvider->getClass($presenterClass);
if ($classReflection->hasMethod('run')) {
return new \Rector\NetteToSymfony\ValueObject\RouteInfo($presenterClass, 'run', $routePath, $methods);
}
}
return null;
}
private function createForString(\PhpParser\Node\Scalar\String_ $string, string $routePath) : ?\Rector\NetteToSymfony\ValueObject\RouteInfo
{
$targetValue = $string->value;
if (!\RectorPrefix20210625\Nette\Utils\Strings::contains($targetValue, ':')) {
return null;
}
[$controller, $method] = \explode(':', $targetValue);
// detect class by controller name?
// foreach all instance and try to match a name $controller . 'Presenter/Controller'
$class = $this->nodeRepository->findByShortName($controller . 'Presenter');
if (!$class instanceof \PhpParser\Node\Stmt\Class_) {
$class = $this->nodeRepository->findByShortName($controller . 'Controller');
}
// unable to find here
if (!$class instanceof \PhpParser\Node\Stmt\Class_) {
return null;
}
$controllerClass = $this->nodeNameResolver->getName($class);
if ($controllerClass === null) {
return null;
}
if (!$this->reflectionProvider->hasClass($controllerClass)) {
return null;
}
$controllerClassReflection = $this->reflectionProvider->getClass($controllerClass);
$renderMethodName = 'render' . \ucfirst($method);
if ($controllerClassReflection->hasMethod($renderMethodName)) {
return new \Rector\NetteToSymfony\ValueObject\RouteInfo($controllerClass, $renderMethodName, $routePath, []);
}
$actionMethodName = 'action' . \ucfirst($method);
if ($controllerClassReflection->hasMethod($actionMethodName)) {
return new \Rector\NetteToSymfony\ValueObject\RouteInfo($controllerClass, $actionMethodName, $routePath, []);
}
return null;
}
}

View File

@ -1,31 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Routing;
use PhpParser\Node\Stmt\ClassMethod;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\PhpDoc\SpacelessPhpDocTagNode;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
final class ExplicitRouteAnnotationDecorator
{
/**
* @var string
*/
public const HAS_ROUTE_ANNOTATION = 'has_route_annotation';
/**
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/
private $phpDocInfoFactory;
public function __construct(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory $phpDocInfoFactory)
{
$this->phpDocInfoFactory = $phpDocInfoFactory;
}
public function decorateClassMethodWithRouteAnnotation(\PhpParser\Node\Stmt\ClassMethod $classMethod, \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode $doctrineAnnotationTagValueNode) : void
{
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($classMethod);
$spacelessPhpDocTagNode = new \Rector\BetterPhpDocParser\PhpDoc\SpacelessPhpDocTagNode('@\\Symfony\\Component\\Routing\\Annotation\\Route', $doctrineAnnotationTagValueNode);
$phpDocInfo->addPhpDocTagNode($spacelessPhpDocTagNode);
$classMethod->setAttribute(self::HAS_ROUTE_ANNOTATION, \true);
}
}

View File

@ -1,29 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Set;
use Rector\Set\Contract\SetListInterface;
final class NetteToSymfonySetList implements \Rector\Set\Contract\SetListInterface
{
/**
* @var string
*/
public const CONTRIBUTTE_TO_SYMFONY = __DIR__ . '/../../config/sets/contributte-to-symfony.php';
/**
* @var string
*/
public const NETTE_CONTROL_TO_SYMFONY_CONTROLLER = __DIR__ . '/../../config/sets/nette-control-to-symfony-controller.php';
/**
* @var string
*/
public const NETTE_FORMS_TO_SYMFONY = __DIR__ . '/../../config/sets/nette-forms-to-symfony.php';
/**
* @var string
*/
public const NETTE_TESTER_TO_PHPUNIT = __DIR__ . '/../../config/sets/nette-tester-to-phpunit.php';
/**
* @var string
*/
public const NETTE_TO_SYMFONY = __DIR__ . '/../../config/sets/nette-to-symfony.php';
}

View File

@ -1,82 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Param;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Expression;
use Rector\Core\PhpParser\Node\NodeFactory;
use Rector\NodeNameResolver\NodeNameResolver;
use RectorPrefix20210625\Symfony\Component\Form\Extension\Core\Type\TextType;
final class SymfonyFormAbstractTypeFactory
{
/**
* @var \Rector\Core\PhpParser\Node\NodeFactory
*/
private $nodeFactory;
/**
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(\Rector\Core\PhpParser\Node\NodeFactory $nodeFactory, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
{
$this->nodeFactory = $nodeFactory;
$this->nodeNameResolver = $nodeNameResolver;
}
/**
* @api
* @param MethodCall[] $methodCalls
*/
public function createFromNetteFormMethodCalls(array $methodCalls) : \PhpParser\Node\Stmt\Class_
{
$formBuilderVariable = new \PhpParser\Node\Expr\Variable('formBuilder');
// public function buildForm(\Symfony\Component\Form\FormBuilderInterface $formBuilder, array $options)
$buildFormClassMethod = $this->nodeFactory->createPublicMethod('buildForm');
$buildFormClassMethod->params[] = new \PhpParser\Node\Param($formBuilderVariable, null, new \PhpParser\Node\Name\FullyQualified('Symfony\\Component\\Form\\FormBuilderInterface'));
$buildFormClassMethod->params[] = new \PhpParser\Node\Param(new \PhpParser\Node\Expr\Variable('options'), null, new \PhpParser\Node\Identifier('array'));
$symfonyMethodCalls = $this->createBuildFormMethodCalls($methodCalls, $formBuilderVariable);
$buildFormClassMethod->stmts = $symfonyMethodCalls;
$formTypeClass = new \PhpParser\Node\Stmt\Class_('SomeFormType');
$formTypeClass->extends = new \PhpParser\Node\Name\FullyQualified('Symfony\\Component\\Form\\AbstractType');
$formTypeClass->stmts[] = $buildFormClassMethod;
return $formTypeClass;
}
/**
* @param MethodCall[] $methodCalls
* @return Expression[]
*/
private function createBuildFormMethodCalls(array $methodCalls, \PhpParser\Node\Expr\Variable $formBuilderVariable) : array
{
$buildFormMethodCalls = [];
// create symfony form from nette form method calls
foreach ($methodCalls as $methodCall) {
if ($this->nodeNameResolver->isName($methodCall->name, 'addText')) {
$optionsArray = $this->createOptionsArray($methodCall);
$formTypeClassConstant = $this->nodeFactory->createClassConstReference(\RectorPrefix20210625\Symfony\Component\Form\Extension\Core\Type\TextType::class);
$args = [$methodCall->args[0], new \PhpParser\Node\Arg($formTypeClassConstant)];
if ($optionsArray instanceof \PhpParser\Node\Expr\Array_) {
$args[] = new \PhpParser\Node\Arg($optionsArray);
}
$methodCall = new \PhpParser\Node\Expr\MethodCall($formBuilderVariable, 'add', $args);
$buildFormMethodCalls[] = new \PhpParser\Node\Stmt\Expression($methodCall);
}
}
return $buildFormMethodCalls;
}
private function createOptionsArray(\PhpParser\Node\Expr\MethodCall $methodCall) : ?\PhpParser\Node\Expr\Array_
{
if (!isset($methodCall->args[1])) {
return null;
}
return new \PhpParser\Node\Expr\Array_([new \PhpParser\Node\Expr\ArrayItem($methodCall->args[1]->value, new \PhpParser\Node\Scalar\String_('label'))]);
}
}

View File

@ -1,66 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\ValueObject;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Assign;
use Rector\Nette\Contract\ValueObject\ParameterArrayInterface;
final class ClassMethodRender implements \Rector\Nette\Contract\ValueObject\ParameterArrayInterface
{
/**
* @var mixed[]
*/
private $templateFileExprs;
/**
* @var mixed[]
*/
private $templateVariables;
/**
* @var mixed[]
*/
private $nodesToRemove;
/**
* @var mixed[]
*/
private $conditionalAssigns;
/**
* @param Expr[] $templateFileExprs
* @param array<string, Expr> $templateVariables
* @param Node[] $nodesToRemove
* @param array<string, Assign[]> $conditionalAssigns
*/
public function __construct(array $templateFileExprs, array $templateVariables, array $nodesToRemove, array $conditionalAssigns)
{
$this->templateFileExprs = $templateFileExprs;
$this->templateVariables = $templateVariables;
$this->nodesToRemove = $nodesToRemove;
$this->conditionalAssigns = $conditionalAssigns;
}
/**
* @return array<string, Expr>
*/
public function getTemplateVariables() : array
{
return $this->templateVariables;
}
/**
* @return string[]
*/
public function getConditionalVariableNames() : array
{
return \array_keys($this->conditionalAssigns);
}
/**
* @return Node[]
*/
public function getNodesToRemove() : array
{
return $this->nodesToRemove;
}
public function getFirstTemplateFileExpr() : ?\PhpParser\Node\Expr
{
return $this->templateFileExprs[0] ?? null;
}
}

View File

@ -1,66 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\ValueObject;
final class EventInfo
{
/**
* @var mixed[]
*/
private $oldStringAliases;
/**
* @var mixed[]
*/
private $oldClassConstAliases;
/**
* @var string
*/
private $class;
/**
* @var string
*/
private $constant;
/**
* @var string
*/
private $eventClass;
/**
* @param string[] $oldStringAliases
* @param string[] $oldClassConstAliases
*/
public function __construct(array $oldStringAliases, array $oldClassConstAliases, string $class, string $constant, string $eventClass)
{
$this->oldStringAliases = $oldStringAliases;
$this->oldClassConstAliases = $oldClassConstAliases;
$this->class = $class;
$this->constant = $constant;
$this->eventClass = $eventClass;
}
/**
* @return string[]
*/
public function getOldStringAliases() : array
{
return $this->oldStringAliases;
}
/**
* @return string[]
*/
public function getOldClassConstAliases() : array
{
return $this->oldClassConstAliases;
}
public function getClass() : string
{
return $this->class;
}
public function getConstant() : string
{
return $this->constant;
}
public function getEventClass() : string
{
return $this->eventClass;
}
}

View File

@ -1,31 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\ValueObject;
final class NetteFormMethodToSymfonyTypeClass
{
/**
* @var array<string, class-string>
*/
public const ADD_METHOD_TO_FORM_TYPE = [
'addText' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType',
'addPassword' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\PasswordType',
'addTextArea' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextareaType',
'addEmail' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\EmailType',
'addInteger' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\IntegerType',
'addHidden' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\HiddenType',
// https://symfony.com/doc/current/reference/forms/types/checkbox.html
'addCheckbox' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\CheckboxType',
'addUpload' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\FileType',
'addImage' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\FileType',
'addMultiUpload' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\FileType',
// https://symfony.com/doc/current/reference/forms/types/choice.html#select-tag-checkboxes-or-radio-buttons
'addSelect' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\ChoiceType',
'addRadioList' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\ChoiceType',
'addCheckboxList' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\ChoiceType',
'addMultiSelect' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\ChoiceType',
'addSubmit' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\SubmitType',
'addButton' => 'Symfony\\Component\\Form\\Extension\\Core\\Type\\ButtonType',
];
}

View File

@ -1,53 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\ValueObject;
final class RouteInfo
{
/**
* @var string
*/
private $class;
/**
* @var string
*/
private $method;
/**
* @var string
*/
private $path;
/**
* @var mixed[]
*/
private $httpMethods = [];
/**
* @param string[] $httpMethods
*/
public function __construct(string $class, string $method, string $path, array $httpMethods = [])
{
$this->class = $class;
$this->method = $method;
$this->path = $path;
$this->httpMethods = $httpMethods;
}
public function getClass() : string
{
return $this->class;
}
public function getMethod() : string
{
return $this->method;
}
public function getPath() : string
{
return $this->path;
}
/**
* @return string[]
*/
public function getHttpMethods() : array
{
return $this->httpMethods;
}
}

View File

@ -1,22 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\ValueObjectFactory;
use Rector\NetteToSymfony\ValueObject\EventInfo;
final class EventInfosFactory
{
/**
* @return EventInfo[]
*/
public function create() : array
{
$eventInfos = [];
$eventInfos[] = new \Rector\NetteToSymfony\ValueObject\EventInfo(['nette.application.startup', 'nette.application.request'], ['Contributte\\Events\\Extra\\Event\\Application\\StartupEvent::NAME', 'Contributte\\Events\\Extra\\Event\\Application\\RequestEvent::NAME', 'Contributte\\Events\\Extra\\Event\\Application\\ApplicationEvents::ON_REQUEST', 'Contributte\\Events\\Extra\\Event\\Application\\ApplicationEvents::ON_STARTUP'], 'Symfony\\Component\\HttpKernel\\KernelEvents', 'REQUEST', 'Symfony\\Component\\HttpKernel\\Event\\GetResponseEvent');
$eventInfos[] = new \Rector\NetteToSymfony\ValueObject\EventInfo(['nette.application.startup', 'nette.application.request'], ['Contributte\\Events\\Extra\\Event\\Application\\StartupEvent::NAME', 'Contributte\\Events\\Extra\\Event\\Application\\RequestEvent::NAME', 'Contributte\\Events\\Extra\\Event\\Application\\ApplicationEvents::ON_REQUEST', 'Contributte\\Events\\Extra\\Event\\Application\\ApplicationEvents::ON_STARTUP'], 'Symfony\\Component\\HttpKernel\\KernelEvents', 'REQUEST', 'Symfony\\Component\\HttpKernel\\Event\\GetResponseEvent');
$eventInfos[] = new \Rector\NetteToSymfony\ValueObject\EventInfo(['nette.application.presenter', 'nette.application.presenter.startup'], ['Contributte\\Events\\Extra\\Event\\Application\\PresenterEvent::NAME', 'Contributte\\Events\\Extra\\Event\\Application\\PresenterStartupEvent::NAME', 'Contributte\\Events\\Extra\\Event\\Application\\PresenterShutdownEvent::NAME', 'Contributte\\Events\\Extra\\Event\\Application\\ApplicationEvents::ON_PRESENTER_SHUTDOWN', 'Contributte\\Events\\Extra\\Event\\Application\\ApplicationEvents::ON_PRESENTER_STARTUP', 'Contributte\\Events\\Extra\\Event\\Application\\ApplicationEvents::ON_PRESENTER'], 'Symfony\\Component\\HttpKernel\\KernelEvents', 'CONTROLLER', 'Symfony\\Component\\HttpKernel\\Event\\FilterControllerEvent');
$eventInfos[] = new \Rector\NetteToSymfony\ValueObject\EventInfo(['nette.application.error'], ['Contributte\\Events\\Extra\\Event\\Application\\ErrorEvent::NAME', 'Contributte\\Events\\Extra\\Event\\Application\\ApplicationEvents::ON_ERROR'], 'Symfony\\Component\\HttpKernel\\KernelEvents', 'EXCEPTION', 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForExceptionEvent');
$eventInfos[] = new \Rector\NetteToSymfony\ValueObject\EventInfo(['nette.application.response'], ['Contributte\\Events\\Extra\\Event\\Application\\ResponseEvent::NAME', 'Contributte\\Events\\Extra\\Event\\Application\\ApplicationEvents::ON_RESPONSE'], 'Symfony\\Component\\HttpKernel\\KernelEvents', 'RESPONSE', 'Symfony\\Component\\HttpKernel\\Event\\FilterResponseEvent');
return $eventInfos;
}
}

View File

@ -3,13 +3,18 @@
declare (strict_types=1);
namespace RectorPrefix20210625;
use Rector\Core\ValueObject\Visibility;
use Rector\Nette\Kdyby\Rector\ClassMethod\ChangeNetteEventNamesInGetSubscribedEventsRector;
use Rector\Nette\Kdyby\Rector\MethodCall\ReplaceEventManagerWithEventSubscriberRector;
use Rector\Renaming\Rector\Name\RenameClassRector;
use Rector\Visibility\Rector\ClassMethod\ChangeMethodVisibilityRector;
use Rector\Visibility\ValueObject\ChangeMethodVisibility;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symplify\SymfonyPhpConfig\ValueObjectInliner;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->set(\Rector\Nette\Kdyby\Rector\ClassMethod\ChangeNetteEventNamesInGetSubscribedEventsRector::class);
$services->set(\Rector\Nette\Kdyby\Rector\MethodCall\ReplaceEventManagerWithEventSubscriberRector::class);
$services->set(\Rector\Visibility\Rector\ClassMethod\ChangeMethodVisibilityRector::class)->call('configure', [[\Rector\Visibility\Rector\ClassMethod\ChangeMethodVisibilityRector::METHOD_VISIBILITIES => \Symplify\SymfonyPhpConfig\ValueObjectInliner::inline([new \Rector\Visibility\ValueObject\ChangeMethodVisibility('Kdyby\\Events\\Subscriber', 'getSubscribedEvents', \Rector\Core\ValueObject\Visibility::STATIC)])]]);
$services->set(\Rector\Renaming\Rector\Name\RenameClassRector::class)->call('configure', [[\Rector\Renaming\Rector\Name\RenameClassRector::OLD_TO_NEW_CLASSES => ['Kdyby\\Events\\Subscriber' => 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface', 'Kdyby\\Events\\EventManager' => 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface']]]);
};

View File

@ -0,0 +1,15 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20210625;
use Rector\Renaming\Rector\MethodCall\RenameMethodRector;
use Rector\Renaming\Rector\Name\RenameClassRector;
use Rector\Renaming\ValueObject\MethodCallRename;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symplify\SymfonyPhpConfig\ValueObjectInliner;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->set(\Rector\Renaming\Rector\MethodCall\RenameMethodRector::class)->call('configure', [[\Rector\Renaming\Rector\MethodCall\RenameMethodRector::METHOD_CALL_RENAMES => \Symplify\SymfonyPhpConfig\ValueObjectInliner::inline([new \Rector\Renaming\ValueObject\MethodCallRename('Kdyby\\RabbitMq\\IConsumer', 'process', 'execute')])]]);
$services->set(\Rector\Renaming\Rector\Name\RenameClassRector::class)->call('configure', [[\Rector\Renaming\Rector\Name\RenameClassRector::OLD_TO_NEW_CLASSES => ['Kdyby\\RabbitMq\\IConsumer' => 'OldSound\\RabbitMqBundle\\RabbitMq\\ConsumerInterface', 'Kdyby\\RabbitMq\\IProducer' => 'OldSound\\RabbitMqBundle\\RabbitMq\\ProducerInterface']]]);
};

View File

@ -3,9 +3,15 @@
declare (strict_types=1);
namespace RectorPrefix20210625;
use Rector\NetteToSymfony\Rector\MethodCall\WrapTransParameterNameRector;
use Rector\Renaming\Rector\MethodCall\RenameMethodRector;
use Rector\Renaming\Rector\Name\RenameClassRector;
use Rector\Renaming\ValueObject\MethodCallRename;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symplify\SymfonyPhpConfig\ValueObjectInliner;
return static function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->set(\Rector\Renaming\Rector\MethodCall\RenameMethodRector::class)->call('configure', [[\Rector\Renaming\Rector\MethodCall\RenameMethodRector::METHOD_CALL_RENAMES => \Symplify\SymfonyPhpConfig\ValueObjectInliner::inline([new \Rector\Renaming\ValueObject\MethodCallRename('Kdyby\\Translation\\Translator', 'translate', 'trans')])]]);
$services->set(\Rector\Renaming\Rector\Name\RenameClassRector::class)->call('configure', [[\Rector\Renaming\Rector\Name\RenameClassRector::OLD_TO_NEW_CLASSES => ['Kdyby\\Translation\\Translator' => 'Nette\\Localization\\ITranslator', 'Kdyby\\Translation\\DI\\ITranslationProvider' => 'Contributte\\Translation\\DI\\TranslationProviderInterface', 'Kdyby\\Translation\\Phrase' => 'Contributte\\Translation\\Wrappers\\Message']]]);
$services->set(\Rector\NetteToSymfony\Rector\MethodCall\WrapTransParameterNameRector::class);
};

View File

@ -1,7 +1,7 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\Rector\MethodCall;
namespace Rector\Nette\Kdyby\Rector\MethodCall;
use RectorPrefix20210625\Nette\Utils\Strings;
use PhpParser\Node;
@ -17,7 +17,7 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
* @changelog https://github.com/Kdyby/Translation/blob/master/docs/en/index.md#placeholders
* https://github.com/Kdyby/Translation/blob/6b0721c767a7be7f15b2fb13c529bea8536230aa/src/Translator.php#L172
*
* @see \Rector\NetteToSymfony\Tests\Rector\MethodCall\WrapTransParameterNameRector\WrapTransParameterNameRectorTest
* @see \Rector\Nette\Tests\Kdyby\Rector\MethodCall\WrapTransParameterNameRector\WrapTransParameterNameRectorTest
*/
final class WrapTransParameterNameRector extends \Rector\Core\Rector\AbstractRector
{

View File

@ -1,7 +1,7 @@
<?php
declare (strict_types=1);
namespace Rector\NetteToSymfony\NodeAnalyzer;
namespace Rector\Nette\NodeAnalyzer\Component;
use PhpParser\Node\Stmt\Interface_;
use PHPStan\Type\ObjectType;

View File

@ -14,4 +14,8 @@ final class KdybySetList implements \Rector\Set\Contract\SetListInterface
* @var string
*/
public const KDYBY_TRANSLATOR_TO_CONTRIBUTTE_TRANSLATION = __DIR__ . '/../../config/sets/kdyby/kdyby-translator-to-contributte-translation.php';
/**
* @var string
*/
public const KDYBY_RABBIT_MQ_TO_SYMFONY = __DIR__ . '/../../config/sets/kdyby/kdyby-rabbit-mq-to-symfony.php';
}

View File

@ -21,15 +21,12 @@ if (!class_exists('SomeTestCase', false) && !interface_exists('SomeTestCase', fa
if (!class_exists('CheckoutEntityFactory', false) && !interface_exists('CheckoutEntityFactory', false) && !trait_exists('CheckoutEntityFactory', false)) {
spl_autoload_call('RectorPrefix20210625\CheckoutEntityFactory');
}
if (!class_exists('ComposerAutoloaderInit4f63aa8e87141b4ceeebbcc45fb1e37f', false) && !interface_exists('ComposerAutoloaderInit4f63aa8e87141b4ceeebbcc45fb1e37f', false) && !trait_exists('ComposerAutoloaderInit4f63aa8e87141b4ceeebbcc45fb1e37f', false)) {
spl_autoload_call('RectorPrefix20210625\ComposerAutoloaderInit4f63aa8e87141b4ceeebbcc45fb1e37f');
if (!class_exists('ComposerAutoloaderInit55d77de373068deda6c6409f95051069', false) && !interface_exists('ComposerAutoloaderInit55d77de373068deda6c6409f95051069', false) && !trait_exists('ComposerAutoloaderInit55d77de373068deda6c6409f95051069', false)) {
spl_autoload_call('RectorPrefix20210625\ComposerAutoloaderInit55d77de373068deda6c6409f95051069');
}
if (!class_exists('Doctrine\Inflector\Inflector', false) && !interface_exists('Doctrine\Inflector\Inflector', false) && !trait_exists('Doctrine\Inflector\Inflector', false)) {
spl_autoload_call('RectorPrefix20210625\Doctrine\Inflector\Inflector');
}
if (!class_exists('SomeFormType', false) && !interface_exists('SomeFormType', false) && !trait_exists('SomeFormType', false)) {
spl_autoload_call('RectorPrefix20210625\SomeFormType');
}
if (!class_exists('AjaxLogin', false) && !interface_exists('AjaxLogin', false) && !trait_exists('AjaxLogin', false)) {
spl_autoload_call('RectorPrefix20210625\AjaxLogin');
}
@ -3323,9 +3320,9 @@ if (!function_exists('print_node')) {
return \RectorPrefix20210625\print_node(...func_get_args());
}
}
if (!function_exists('composerRequire4f63aa8e87141b4ceeebbcc45fb1e37f')) {
function composerRequire4f63aa8e87141b4ceeebbcc45fb1e37f() {
return \RectorPrefix20210625\composerRequire4f63aa8e87141b4ceeebbcc45fb1e37f(...func_get_args());
if (!function_exists('composerRequire55d77de373068deda6c6409f95051069')) {
function composerRequire55d77de373068deda6c6409f95051069() {
return \RectorPrefix20210625\composerRequire55d77de373068deda6c6409f95051069(...func_get_args());
}
}
if (!function_exists('parseArgs')) {