mirror of
https://github.com/rectorphp/rector.git
synced 2025-02-11 19:15:10 +01:00
* nette-30 config cleanup * [TypeDeclaratoin] Move AddReturnTypeDeclarationRector from generic * add Type support to AddReturnTypeDeclaration * make AddParamTypeDeclarationRector use PHPStan type objects over strings * [SymfonyPhpConfig] Add support for nested types * drop StringTypeToPhpParserNodeMapper * [ci-review] Rector Rectify Co-authored-by: rector-bot <tomas@getrector.org>
206 lines
11 KiB
PHP
206 lines
11 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use PHPStan\Type\BooleanType;
|
|
use PHPStan\Type\IntegerType;
|
|
use PHPStan\Type\NullType;
|
|
use PHPStan\Type\ObjectType;
|
|
use PHPStan\Type\StringType;
|
|
use PHPStan\Type\UnionType;
|
|
use PHPStan\Type\VoidType;
|
|
use Rector\CakePHP\Rector\MethodCall\ModalToGetSetRector;
|
|
use Rector\CakePHP\Rector\MethodCall\RenameMethodCallBasedOnParameterRector;
|
|
use Rector\CakePHP\ValueObject\ModalToGetSet;
|
|
use Rector\CakePHP\ValueObject\RenameMethodCallBasedOnParameter;
|
|
use Rector\Renaming\Rector\ClassConstFetch\RenameClassConstantRector;
|
|
use Rector\Renaming\Rector\MethodCall\RenameMethodRector;
|
|
use Rector\Renaming\Rector\Name\RenameClassRector;
|
|
use Rector\Renaming\Rector\PropertyFetch\RenamePropertyRector;
|
|
use Rector\Renaming\Rector\StaticCall\RenameStaticMethodRector;
|
|
use Rector\Renaming\ValueObject\MethodCallRename;
|
|
use Rector\Renaming\ValueObject\RenameClassConstant;
|
|
use Rector\Renaming\ValueObject\RenameProperty;
|
|
use Rector\Renaming\ValueObject\RenameStaticMethod;
|
|
use function Rector\SymfonyPhpConfig\inline_value_objects;
|
|
use Rector\TypeDeclaration\Rector\ClassMethod\AddParamTypeDeclarationRector;
|
|
use Rector\TypeDeclaration\Rector\ClassMethod\AddReturnTypeDeclarationRector;
|
|
use Rector\TypeDeclaration\ValueObject\AddParamTypeDeclaration;
|
|
use Rector\TypeDeclaration\ValueObject\AddReturnTypeDeclaration;
|
|
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
|
|
|
|
# source: https://book.cakephp.org/4/en/appendices/4-0-migration-guide.html
|
|
|
|
return static function (ContainerConfigurator $containerConfigurator): void {
|
|
$services = $containerConfigurator->services();
|
|
|
|
$services->set(RenameClassRector::class)
|
|
->call('configure', [[
|
|
RenameClassRector::OLD_TO_NEW_CLASSES => [
|
|
'Cake\Database\Type' => 'Cake\Database\TypeFactory',
|
|
'Cake\Console\ConsoleErrorHandler' => 'Cake\Error\ConsoleErrorHandler',
|
|
],
|
|
]]);
|
|
|
|
$services->set(RenameClassConstantRector::class)
|
|
->call('configure', [[
|
|
RenameClassConstantRector::CLASS_CONSTANT_RENAME => inline_value_objects([
|
|
new RenameClassConstant('Cake\View\View', 'NAME_ELEMENT', 'TYPE_ELEMENT'),
|
|
new RenameClassConstant('Cake\View\View', 'NAME_LAYOUT', 'TYPE_LAYOUT'),
|
|
new RenameClassConstant('Cake\Mailer\Email', 'MESSAGE_HTML', 'Cake\Mailer\Message::MESSAGE_HTML'),
|
|
new RenameClassConstant('Cake\Mailer\Email', 'MESSAGE_TEXT', 'Cake\Mailer\Message::MESSAGE_TEXT'),
|
|
new RenameClassConstant('Cake\Mailer\Email', 'MESSAGE_BOTH', 'Cake\Mailer\Message::MESSAGE_BOTH'),
|
|
new RenameClassConstant('Cake\Mailer\Email', 'EMAIL_PATTERN', 'Cake\Mailer\Message::EMAIL_PATTERN'),
|
|
]),
|
|
]]);
|
|
|
|
$services->set(RenameMethodRector::class)
|
|
->call('configure', [[
|
|
RenameMethodRector::METHOD_CALL_RENAMES => inline_value_objects([
|
|
new MethodCallRename('Cake\Form\Form', 'errors', 'getErrors'),
|
|
new MethodCallRename('Cake\Mailer\Email', 'set', 'setViewVars'),
|
|
new MethodCallRename('Cake\ORM\EntityInterface', 'unsetProperty', 'unset'),
|
|
new MethodCallRename('Cake\Cache\Cache', 'engine', 'pool'),
|
|
new MethodCallRename('Cake\Http\Cookie\Cookie', 'getStringValue', 'getScalarValue'),
|
|
new MethodCallRename('Cake\Validation\Validator', 'containsNonAlphaNumeric', 'notAlphaNumeric'),
|
|
new MethodCallRename('Cake\Validation\Validator', 'errors', 'validate'),
|
|
]),
|
|
]]);
|
|
|
|
$services->set(RenameStaticMethodRector::class)
|
|
->call('configure', [[
|
|
RenameStaticMethodRector::OLD_TO_NEW_METHODS_BY_CLASSES => inline_value_objects([
|
|
new RenameStaticMethod('Router', 'pushRequest', 'Router', 'setRequest'),
|
|
new RenameStaticMethod('Router', 'setRequestInfo', 'Router', 'setRequest'),
|
|
new RenameStaticMethod('Router', 'setRequestContext', 'Router', 'setRequest'),
|
|
]),
|
|
]]);
|
|
|
|
$services->set(RenamePropertyRector::class)
|
|
->call('configure', [[
|
|
RenamePropertyRector::RENAMED_PROPERTIES => inline_value_objects([
|
|
new RenameProperty('Cake\ORM\Entity', '_properties', '_fields'),
|
|
]),
|
|
]]);
|
|
|
|
$services->set(AddReturnTypeDeclarationRector::class)
|
|
->call('configure', [[
|
|
AddReturnTypeDeclarationRector::METHOD_RETURN_TYPES => inline_value_objects([
|
|
new AddReturnTypeDeclaration('Cake\Http\BaseApplication', 'bootstrap', new VoidType()),
|
|
new AddReturnTypeDeclaration('Cake\Http\BaseApplication', 'bootstrapCli', new VoidType()),
|
|
new AddReturnTypeDeclaration('Cake\Http\BaseApplication', 'middleware', new ObjectType(
|
|
'Cake\Http\MiddlewareQueue'
|
|
)),
|
|
new AddReturnTypeDeclaration('Cake\Console\Shell', 'initialize', new VoidType()),
|
|
new AddReturnTypeDeclaration('Cake\Controller\Component', 'initialize', new VoidType()),
|
|
new AddReturnTypeDeclaration('Cake\Controller\Controller', 'initialize', new VoidType()),
|
|
new AddReturnTypeDeclaration('Cake\Controller\Controller', 'render', new ObjectType(
|
|
'Cake\Http\Response'
|
|
)),
|
|
new AddReturnTypeDeclaration('Cake\Form\Form', 'validate', new BooleanType()),
|
|
new AddReturnTypeDeclaration('Cake\Form\Form', '_buildSchema', new ObjectType('Cake\Form\Schema')),
|
|
new AddReturnTypeDeclaration('Cake\ORM\Behavior', 'initialize', new VoidType()),
|
|
new AddReturnTypeDeclaration('Cake\ORM\Table', 'initialize', new VoidType()),
|
|
new AddReturnTypeDeclaration('Cake\ORM\Table', 'updateAll', new IntegerType()),
|
|
new AddReturnTypeDeclaration('Cake\ORM\Table', 'deleteAll', new IntegerType()),
|
|
new AddReturnTypeDeclaration('Cake\ORM\Table', 'validationDefault', new ObjectType(
|
|
'Cake\Validation\Validator'
|
|
)),
|
|
new AddReturnTypeDeclaration('Cake\ORM\Table', 'buildRules', new ObjectType('Cake\ORM\RulesChecker')),
|
|
new AddReturnTypeDeclaration('Cake\View\Helper', 'initialize', new VoidType()), ]),
|
|
]]);
|
|
|
|
$eventInterfaceObjectType = new ObjectType('Cake\Event\EventInterface');
|
|
|
|
$services->set(AddParamTypeDeclarationRector::class)
|
|
->call('configure', [[
|
|
AddParamTypeDeclarationRector::PARAMETER_TYPEHINTS => inline_value_objects([
|
|
new AddParamTypeDeclaration(
|
|
'Cake\Form\Form',
|
|
'getData',
|
|
0,
|
|
new UnionType([new StringType(), new NullType()])
|
|
),
|
|
new AddParamTypeDeclaration('Cake\ORM\Behavior', 'beforeFind', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Behavior', 'buildValidator', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Behavior', 'buildRules', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Behavior', 'beforeRules', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Behavior', 'afterRules', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Behavior', 'beforeSave', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Behavior', 'afterSave', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Behavior', 'beforeDelete', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Behavior', 'afterDelete', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Table', 'beforeFind', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Table', 'buildValidator', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Table', 'buildRules', 0, new ObjectType('Cake\ORM\RulesChecker')),
|
|
new AddParamTypeDeclaration('Cake\ORM\Table', 'beforeRules', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Table', 'afterRules', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Table', 'beforeSave', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Table', 'afterSave', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Table', 'beforeDelete', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\ORM\Table', 'afterDelete', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration(
|
|
'Cake\Controller\Controller',
|
|
'beforeFilter',
|
|
0,
|
|
$eventInterfaceObjectType
|
|
),
|
|
new AddParamTypeDeclaration(
|
|
'Cake\Controller\Controller',
|
|
'afterFilter',
|
|
0,
|
|
$eventInterfaceObjectType
|
|
),
|
|
new AddParamTypeDeclaration(
|
|
'Cake\Controller\Controller',
|
|
'beforeRender',
|
|
0,
|
|
$eventInterfaceObjectType
|
|
),
|
|
new AddParamTypeDeclaration(
|
|
'Cake\Controller\Controller',
|
|
'beforeRedirect',
|
|
0,
|
|
$eventInterfaceObjectType
|
|
),
|
|
new AddParamTypeDeclaration('Cake\Controller\Component', 'shutdown', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration('Cake\Controller\Component', 'startup', 0, $eventInterfaceObjectType),
|
|
new AddParamTypeDeclaration(
|
|
'Cake\Controller\Component',
|
|
'beforeFilter',
|
|
0,
|
|
$eventInterfaceObjectType
|
|
),
|
|
new AddParamTypeDeclaration(
|
|
'Cake\Controller\Component',
|
|
'beforeRender',
|
|
0,
|
|
$eventInterfaceObjectType
|
|
),
|
|
new AddParamTypeDeclaration(
|
|
'Cake\Controller\Component',
|
|
'beforeRedirect',
|
|
0,
|
|
$eventInterfaceObjectType
|
|
),
|
|
]),
|
|
]]);
|
|
|
|
$services->set(RenameMethodCallBasedOnParameterRector::class)
|
|
->call('configure', [[
|
|
RenameMethodCallBasedOnParameterRector::CALLS_WITH_PARAM_RENAMES => inline_value_objects([
|
|
new RenameMethodCallBasedOnParameter('Cake\Http\ServerRequest', 'getParam', 'paging', 'getAttribute'),
|
|
new RenameMethodCallBasedOnParameter('Cake\Http\ServerRequest', 'withParam', 'paging', 'withAttribute'),
|
|
]),
|
|
]]);
|
|
|
|
$services->set(ModalToGetSetRector::class)
|
|
->call('configure', [[
|
|
ModalToGetSetRector::UNPREFIXED_METHODS_TO_GET_SET => inline_value_objects([
|
|
new ModalToGetSet('Cake\Console\ConsoleIo', 'styles', 'setStyle', 'getStyle'),
|
|
new ModalToGetSet('Cake\Console\ConsoleOutput', 'styles', 'setStyle', 'getStyle'),
|
|
new ModalToGetSet('Cake\ORM\EntityInterface', 'isNew', 'setNew', 'isNew'),
|
|
]),
|
|
]]);
|
|
};
|