Updated Rector to commit 478cf1456091c3c095870588ebf2cd7a94672264

478cf14560 pin phpstan/phpstan-phpunit to 1.1.3 (#3018)
This commit is contained in:
Tomas Votruba 2022-10-27 12:57:23 +00:00
parent ccac2c982e
commit 37117895cd
29 changed files with 185 additions and 1450 deletions

View File

@ -17,12 +17,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = 'b46d5f50092e61888943960a5320e77822e047c3';
public const PACKAGE_VERSION = '478cf1456091c3c095870588ebf2cd7a94672264';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2022-10-26 10:55:40';
public const RELEASE_DATE = '2022-10-27 14:51:18';
/**
* @var int
*/

2
vendor/autoload.php vendored
View File

@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) {
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit6a43ec02ad822ac8b59c5b0beffef4e2::getLoader();
return ComposerAutoloaderInit63a05dd74929123e8e5c24eb32e8fb87::getLoader();

View File

@ -1578,7 +1578,6 @@ return array(
'Rector\\Doctrine\\NodeAnalyzer\\MethodCallNameOnTypeResolver' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/MethodCallNameOnTypeResolver.php',
'Rector\\Doctrine\\NodeAnalyzer\\SetterClassMethodAnalyzer' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/SetterClassMethodAnalyzer.php',
'Rector\\Doctrine\\NodeAnalyzer\\TargetEntityResolver' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/TargetEntityResolver.php',
'Rector\\Doctrine\\NodeAnalyzer\\TranslatablePropertyCollectorAndRemover' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/TranslatablePropertyCollectorAndRemover.php',
'Rector\\Doctrine\\NodeFactory\\ArrayCollectionAssignFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/ArrayCollectionAssignFactory.php',
'Rector\\Doctrine\\NodeFactory\\ConstructClassMethodFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/ConstructClassMethodFactory.php',
'Rector\\Doctrine\\NodeFactory\\ConstructorClassMethodAssignFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/ConstructorClassMethodAssignFactory.php',
@ -1586,8 +1585,6 @@ return array(
'Rector\\Doctrine\\NodeFactory\\ParamFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/ParamFactory.php',
'Rector\\Doctrine\\NodeFactory\\RepositoryAssignFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/RepositoryAssignFactory.php',
'Rector\\Doctrine\\NodeFactory\\RepositoryNodeFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/RepositoryNodeFactory.php',
'Rector\\Doctrine\\NodeFactory\\SluggableClassMethodFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/SluggableClassMethodFactory.php',
'Rector\\Doctrine\\NodeFactory\\TranslationClassNodeFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/TranslationClassNodeFactory.php',
'Rector\\Doctrine\\NodeFactory\\ValueAssignFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/ValueAssignFactory.php',
'Rector\\Doctrine\\NodeManipulator\\ColumnPropertyTypeResolver' => $vendorDir . '/rector/rector-doctrine/src/NodeManipulator/ColumnPropertyTypeResolver.php',
'Rector\\Doctrine\\NodeManipulator\\ConstructorManipulator' => $vendorDir . '/rector/rector-doctrine/src/NodeManipulator/ConstructorManipulator.php',
@ -1604,20 +1601,13 @@ return array(
'Rector\\Doctrine\\Rector\\ClassMethod\\MakeEntitySetterNullabilityInSyncWithPropertyRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/ClassMethod/MakeEntitySetterNullabilityInSyncWithPropertyRector.php',
'Rector\\Doctrine\\Rector\\ClassMethod\\ServiceEntityRepositoryParentCallToDIRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/ClassMethod/ServiceEntityRepositoryParentCallToDIRector.php',
'Rector\\Doctrine\\Rector\\Class_\\AddEntityIdByConditionRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/AddEntityIdByConditionRector.php',
'Rector\\Doctrine\\Rector\\Class_\\BlameableBehaviorRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/BlameableBehaviorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\ClassAnnotationToNamedArgumentConstructorRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/ClassAnnotationToNamedArgumentConstructorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\InitializeDefaultEntityCollectionRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/InitializeDefaultEntityCollectionRector.php',
'Rector\\Doctrine\\Rector\\Class_\\LoggableBehaviorRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/LoggableBehaviorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\ManagerRegistryGetManagerToEntityManagerRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/ManagerRegistryGetManagerToEntityManagerRector.php',
'Rector\\Doctrine\\Rector\\Class_\\MoveCurrentDateTimeDefaultInEntityToConstructorRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/MoveCurrentDateTimeDefaultInEntityToConstructorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\MoveRepositoryFromParentToConstructorRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/MoveRepositoryFromParentToConstructorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\RemoveRedundantDefaultClassAnnotationValuesRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/RemoveRedundantDefaultClassAnnotationValuesRector.php',
'Rector\\Doctrine\\Rector\\Class_\\RemoveRepositoryFromEntityAnnotationRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/RemoveRepositoryFromEntityAnnotationRector.php',
'Rector\\Doctrine\\Rector\\Class_\\SluggableBehaviorRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/SluggableBehaviorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\SoftDeletableBehaviorRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/SoftDeletableBehaviorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\TimestampableBehaviorRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/TimestampableBehaviorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\TranslationBehaviorRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/TranslationBehaviorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\TreeBehaviorRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/Class_/TreeBehaviorRector.php',
'Rector\\Doctrine\\Rector\\MethodCall\\ChangeSetParametersArrayToArrayCollectionRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/MethodCall/ChangeSetParametersArrayToArrayCollectionRector.php',
'Rector\\Doctrine\\Rector\\MethodCall\\EntityAliasToClassConstantReferenceRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/MethodCall/EntityAliasToClassConstantReferenceRector.php',
'Rector\\Doctrine\\Rector\\MethodCall\\ReplaceParentRepositoryCallsByRepositoryPropertyRector' => $vendorDir . '/rector/rector-doctrine/src/Rector/MethodCall/ReplaceParentRepositoryCallsByRepositoryPropertyRector.php',
@ -1641,8 +1631,6 @@ return array(
'Rector\\Doctrine\\ValueObject\\ArgName' => $vendorDir . '/rector/rector-doctrine/src/ValueObject/ArgName.php',
'Rector\\Doctrine\\ValueObject\\AssignToPropertyFetch' => $vendorDir . '/rector/rector-doctrine/src/ValueObject/AssignToPropertyFetch.php',
'Rector\\Doctrine\\ValueObject\\DefaultAnnotationArgValue' => $vendorDir . '/rector/rector-doctrine/src/ValueObject/DefaultAnnotationArgValue.php',
'Rector\\Doctrine\\ValueObject\\PropertyNameAndPhpDocInfo' => $vendorDir . '/rector/rector-doctrine/src/ValueObject/PropertyNameAndPhpDocInfo.php',
'Rector\\Doctrine\\ValueObject\\PropertyNamesAndPhpDocInfos' => $vendorDir . '/rector/rector-doctrine/src/ValueObject/PropertyNamesAndPhpDocInfos.php',
'Rector\\DowngradePhp53\\Rector\\Dir\\DirConstToFileConstRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp53/Rector/Dir/DirConstToFileConstRector.php',
'Rector\\DowngradePhp54\\Rector\\Array_\\ShortArrayToLongArrayRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp54/Rector/Array_/ShortArrayToLongArrayRector.php',
'Rector\\DowngradePhp54\\Rector\\Closure\\DowngradeStaticClosureRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp54/Rector/Closure/DowngradeStaticClosureRector.php',

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit6a43ec02ad822ac8b59c5b0beffef4e2
class ComposerAutoloaderInit63a05dd74929123e8e5c24eb32e8fb87
{
private static $loader;
@ -22,19 +22,19 @@ class ComposerAutoloaderInit6a43ec02ad822ac8b59c5b0beffef4e2
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit6a43ec02ad822ac8b59c5b0beffef4e2', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInit63a05dd74929123e8e5c24eb32e8fb87', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInit6a43ec02ad822ac8b59c5b0beffef4e2', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInit63a05dd74929123e8e5c24eb32e8fb87', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit6a43ec02ad822ac8b59c5b0beffef4e2::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInit63a05dd74929123e8e5c24eb32e8fb87::getInitializer($loader));
$loader->setClassMapAuthoritative(true);
$loader->register(true);
$includeFiles = \Composer\Autoload\ComposerStaticInit6a43ec02ad822ac8b59c5b0beffef4e2::$files;
$includeFiles = \Composer\Autoload\ComposerStaticInit63a05dd74929123e8e5c24eb32e8fb87::$files;
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequire6a43ec02ad822ac8b59c5b0beffef4e2($fileIdentifier, $file);
composerRequire63a05dd74929123e8e5c24eb32e8fb87($fileIdentifier, $file);
}
return $loader;
@ -46,7 +46,7 @@ class ComposerAutoloaderInit6a43ec02ad822ac8b59c5b0beffef4e2
* @param string $file
* @return void
*/
function composerRequire6a43ec02ad822ac8b59c5b0beffef4e2($fileIdentifier, $file)
function composerRequire63a05dd74929123e8e5c24eb32e8fb87($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInit6a43ec02ad822ac8b59c5b0beffef4e2
class ComposerStaticInit63a05dd74929123e8e5c24eb32e8fb87
{
public static $files = array (
'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
@ -1833,7 +1833,6 @@ class ComposerStaticInit6a43ec02ad822ac8b59c5b0beffef4e2
'Rector\\Doctrine\\NodeAnalyzer\\MethodCallNameOnTypeResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/MethodCallNameOnTypeResolver.php',
'Rector\\Doctrine\\NodeAnalyzer\\SetterClassMethodAnalyzer' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/SetterClassMethodAnalyzer.php',
'Rector\\Doctrine\\NodeAnalyzer\\TargetEntityResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/TargetEntityResolver.php',
'Rector\\Doctrine\\NodeAnalyzer\\TranslatablePropertyCollectorAndRemover' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/TranslatablePropertyCollectorAndRemover.php',
'Rector\\Doctrine\\NodeFactory\\ArrayCollectionAssignFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/ArrayCollectionAssignFactory.php',
'Rector\\Doctrine\\NodeFactory\\ConstructClassMethodFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/ConstructClassMethodFactory.php',
'Rector\\Doctrine\\NodeFactory\\ConstructorClassMethodAssignFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/ConstructorClassMethodAssignFactory.php',
@ -1841,8 +1840,6 @@ class ComposerStaticInit6a43ec02ad822ac8b59c5b0beffef4e2
'Rector\\Doctrine\\NodeFactory\\ParamFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/ParamFactory.php',
'Rector\\Doctrine\\NodeFactory\\RepositoryAssignFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/RepositoryAssignFactory.php',
'Rector\\Doctrine\\NodeFactory\\RepositoryNodeFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/RepositoryNodeFactory.php',
'Rector\\Doctrine\\NodeFactory\\SluggableClassMethodFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/SluggableClassMethodFactory.php',
'Rector\\Doctrine\\NodeFactory\\TranslationClassNodeFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/TranslationClassNodeFactory.php',
'Rector\\Doctrine\\NodeFactory\\ValueAssignFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/ValueAssignFactory.php',
'Rector\\Doctrine\\NodeManipulator\\ColumnPropertyTypeResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeManipulator/ColumnPropertyTypeResolver.php',
'Rector\\Doctrine\\NodeManipulator\\ConstructorManipulator' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeManipulator/ConstructorManipulator.php',
@ -1859,20 +1856,13 @@ class ComposerStaticInit6a43ec02ad822ac8b59c5b0beffef4e2
'Rector\\Doctrine\\Rector\\ClassMethod\\MakeEntitySetterNullabilityInSyncWithPropertyRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/ClassMethod/MakeEntitySetterNullabilityInSyncWithPropertyRector.php',
'Rector\\Doctrine\\Rector\\ClassMethod\\ServiceEntityRepositoryParentCallToDIRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/ClassMethod/ServiceEntityRepositoryParentCallToDIRector.php',
'Rector\\Doctrine\\Rector\\Class_\\AddEntityIdByConditionRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/AddEntityIdByConditionRector.php',
'Rector\\Doctrine\\Rector\\Class_\\BlameableBehaviorRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/BlameableBehaviorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\ClassAnnotationToNamedArgumentConstructorRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/ClassAnnotationToNamedArgumentConstructorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\InitializeDefaultEntityCollectionRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/InitializeDefaultEntityCollectionRector.php',
'Rector\\Doctrine\\Rector\\Class_\\LoggableBehaviorRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/LoggableBehaviorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\ManagerRegistryGetManagerToEntityManagerRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/ManagerRegistryGetManagerToEntityManagerRector.php',
'Rector\\Doctrine\\Rector\\Class_\\MoveCurrentDateTimeDefaultInEntityToConstructorRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/MoveCurrentDateTimeDefaultInEntityToConstructorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\MoveRepositoryFromParentToConstructorRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/MoveRepositoryFromParentToConstructorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\RemoveRedundantDefaultClassAnnotationValuesRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/RemoveRedundantDefaultClassAnnotationValuesRector.php',
'Rector\\Doctrine\\Rector\\Class_\\RemoveRepositoryFromEntityAnnotationRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/RemoveRepositoryFromEntityAnnotationRector.php',
'Rector\\Doctrine\\Rector\\Class_\\SluggableBehaviorRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/SluggableBehaviorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\SoftDeletableBehaviorRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/SoftDeletableBehaviorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\TimestampableBehaviorRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/TimestampableBehaviorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\TranslationBehaviorRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/TranslationBehaviorRector.php',
'Rector\\Doctrine\\Rector\\Class_\\TreeBehaviorRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/Class_/TreeBehaviorRector.php',
'Rector\\Doctrine\\Rector\\MethodCall\\ChangeSetParametersArrayToArrayCollectionRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/MethodCall/ChangeSetParametersArrayToArrayCollectionRector.php',
'Rector\\Doctrine\\Rector\\MethodCall\\EntityAliasToClassConstantReferenceRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/MethodCall/EntityAliasToClassConstantReferenceRector.php',
'Rector\\Doctrine\\Rector\\MethodCall\\ReplaceParentRepositoryCallsByRepositoryPropertyRector' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Rector/MethodCall/ReplaceParentRepositoryCallsByRepositoryPropertyRector.php',
@ -1896,8 +1886,6 @@ class ComposerStaticInit6a43ec02ad822ac8b59c5b0beffef4e2
'Rector\\Doctrine\\ValueObject\\ArgName' => __DIR__ . '/..' . '/rector/rector-doctrine/src/ValueObject/ArgName.php',
'Rector\\Doctrine\\ValueObject\\AssignToPropertyFetch' => __DIR__ . '/..' . '/rector/rector-doctrine/src/ValueObject/AssignToPropertyFetch.php',
'Rector\\Doctrine\\ValueObject\\DefaultAnnotationArgValue' => __DIR__ . '/..' . '/rector/rector-doctrine/src/ValueObject/DefaultAnnotationArgValue.php',
'Rector\\Doctrine\\ValueObject\\PropertyNameAndPhpDocInfo' => __DIR__ . '/..' . '/rector/rector-doctrine/src/ValueObject/PropertyNameAndPhpDocInfo.php',
'Rector\\Doctrine\\ValueObject\\PropertyNamesAndPhpDocInfos' => __DIR__ . '/..' . '/rector/rector-doctrine/src/ValueObject/PropertyNamesAndPhpDocInfos.php',
'Rector\\DowngradePhp53\\Rector\\Dir\\DirConstToFileConstRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp53/Rector/Dir/DirConstToFileConstRector.php',
'Rector\\DowngradePhp54\\Rector\\Array_\\ShortArrayToLongArrayRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp54/Rector/Array_/ShortArrayToLongArrayRector.php',
'Rector\\DowngradePhp54\\Rector\\Closure\\DowngradeStaticClosureRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp54/Rector/Closure/DowngradeStaticClosureRector.php',
@ -3093,9 +3081,9 @@ class ComposerStaticInit6a43ec02ad822ac8b59c5b0beffef4e2
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit6a43ec02ad822ac8b59c5b0beffef4e2::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit6a43ec02ad822ac8b59c5b0beffef4e2::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit6a43ec02ad822ac8b59c5b0beffef4e2::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInit63a05dd74929123e8e5c24eb32e8fb87::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit63a05dd74929123e8e5c24eb32e8fb87::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit63a05dd74929123e8e5c24eb32e8fb87::$classMap;
}, null, ClassLoader::class);
}

View File

@ -1784,12 +1784,12 @@
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-doctrine.git",
"reference": "3b465ad98d1018dfd389b41a709fe69d5276d562"
"reference": "17bdb82a53af4f58dfb4c00634e8942e653bfaef"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-doctrine\/zipball\/3b465ad98d1018dfd389b41a709fe69d5276d562",
"reference": "3b465ad98d1018dfd389b41a709fe69d5276d562",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-doctrine\/zipball\/17bdb82a53af4f58dfb4c00634e8942e653bfaef",
"reference": "17bdb82a53af4f58dfb4c00634e8942e653bfaef",
"shasum": ""
},
"require": {
@ -1815,7 +1815,7 @@
"symplify\/rule-doc-generator": "^11.1",
"symplify\/vendor-patches": "^11.1"
},
"time": "2022-10-25T09:00:56+00:00",
"time": "2022-10-26T10:28:39+00:00",
"default-branch": true,
"type": "rector-extension",
"extra": {
@ -1853,12 +1853,12 @@
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-downgrade-php.git",
"reference": "d75c674779ffbbb96e2b02074b1e2877dc37781d"
"reference": "da1013feacd1f27dbd414734fd2768d9258a5f7b"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-downgrade-php\/zipball\/d75c674779ffbbb96e2b02074b1e2877dc37781d",
"reference": "d75c674779ffbbb96e2b02074b1e2877dc37781d",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-downgrade-php\/zipball\/da1013feacd1f27dbd414734fd2768d9258a5f7b",
"reference": "da1013feacd1f27dbd414734fd2768d9258a5f7b",
"shasum": ""
},
"require": {
@ -1883,7 +1883,7 @@
"symplify\/rule-doc-generator": "^11.1",
"symplify\/vendor-patches": "^11.1"
},
"time": "2022-09-06T11:58:38+00:00",
"time": "2022-10-26T11:10:13+00:00",
"default-branch": true,
"type": "rector-extension",
"extra": {
@ -1913,7 +1913,7 @@
"description": "Rector downgrade PHP rules",
"support": {
"issues": "https:\/\/github.com\/rectorphp\/rector-downgrade-php\/issues",
"source": "https:\/\/github.com\/rectorphp\/rector-downgrade-php\/tree\/main"
"source": "https:\/\/github.com\/rectorphp\/rector-downgrade-php\/tree\/0.14.0"
},
"install-path": "..\/rector\/rector-downgrade-php"
},
@ -3107,17 +3107,17 @@
},
{
"name": "symplify\/autowire-array-parameter",
"version": "11.1.12",
"version_normalized": "11.1.12.0",
"version": "11.1.16",
"version_normalized": "11.1.16.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symplify\/autowire-array-parameter.git",
"reference": "7bd60ae72303e1e127b842d3d76486b698ac6ef8"
"reference": "d9dafca176d8676e9e102e0efb6f1ea8c634f898"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/symplify\/autowire-array-parameter\/zipball\/7bd60ae72303e1e127b842d3d76486b698ac6ef8",
"reference": "7bd60ae72303e1e127b842d3d76486b698ac6ef8",
"url": "https:\/\/api.github.com\/repos\/symplify\/autowire-array-parameter\/zipball\/d9dafca176d8676e9e102e0efb6f1ea8c634f898",
"reference": "d9dafca176d8676e9e102e0efb6f1ea8c634f898",
"shasum": ""
},
"require": {
@ -3126,31 +3126,31 @@
"symfony\/dependency-injection": "^6.1"
},
"conflict": {
"symplify\/coding-standard": "<11.1.12",
"symplify\/composer-json-manipulator": "<11.1.12",
"symplify\/config-transformer": "<11.1.12",
"symplify\/easy-ci": "<11.1.12",
"symplify\/easy-coding-standard": "<11.1.12",
"symplify\/easy-parallel": "<11.1.12",
"symplify\/easy-testing": "<11.1.12",
"symplify\/monorepo-builder": "<11.1.12",
"symplify\/package-builder": "<11.1.12",
"symplify\/php-config-printer": "<11.1.12",
"symplify\/phpstan-extensions": "<11.1.12",
"symplify\/phpstan-rules": "<11.1.12",
"symplify\/rule-doc-generator": "<11.1.12",
"symplify\/rule-doc-generator-contracts": "<11.1.12",
"symplify\/smart-file-system": "<11.1.12",
"symplify\/symfony-static-dumper": "<11.1.12",
"symplify\/symplify-kernel": "<11.1.12",
"symplify\/vendor-patches": "<11.1.12"
"symplify\/coding-standard": "<11.1.16",
"symplify\/composer-json-manipulator": "<11.1.16",
"symplify\/config-transformer": "<11.1.16",
"symplify\/easy-ci": "<11.1.16",
"symplify\/easy-coding-standard": "<11.1.16",
"symplify\/easy-parallel": "<11.1.16",
"symplify\/easy-testing": "<11.1.16",
"symplify\/monorepo-builder": "<11.1.16",
"symplify\/package-builder": "<11.1.16",
"symplify\/php-config-printer": "<11.1.16",
"symplify\/phpstan-extensions": "<11.1.16",
"symplify\/phpstan-rules": "<11.1.16",
"symplify\/rule-doc-generator": "<11.1.16",
"symplify\/rule-doc-generator-contracts": "<11.1.16",
"symplify\/smart-file-system": "<11.1.16",
"symplify\/symfony-static-dumper": "<11.1.16",
"symplify\/symplify-kernel": "<11.1.16",
"symplify\/vendor-patches": "<11.1.16"
},
"require-dev": {
"phpunit\/phpunit": "^9.5.23",
"symplify\/package-builder": "^11.1.12",
"symplify\/symplify-kernel": "^11.1.12"
"symplify\/package-builder": "^11.1.16",
"symplify\/symplify-kernel": "^11.1.16"
},
"time": "2022-10-24T19:26:43+00:00",
"time": "2022-10-27T10:44:33+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -3169,7 +3169,7 @@
],
"description": "Autowire array parameters for your Symfony applications",
"support": {
"source": "https:\/\/github.com\/symplify\/autowire-array-parameter\/tree\/11.1.12"
"source": "https:\/\/github.com\/symplify\/autowire-array-parameter\/tree\/11.1.16"
},
"funding": [
{
@ -3185,17 +3185,17 @@
},
{
"name": "symplify\/easy-parallel",
"version": "11.1.12",
"version_normalized": "11.1.12.0",
"version": "11.1.16",
"version_normalized": "11.1.16.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symplify\/easy-parallel.git",
"reference": "25547e46897963a299ade9e6ef04441a56b01b71"
"reference": "d60b7d6975b44ecf34b8bb39c48872c0995acce1"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/symplify\/easy-parallel\/zipball\/25547e46897963a299ade9e6ef04441a56b01b71",
"reference": "25547e46897963a299ade9e6ef04441a56b01b71",
"url": "https:\/\/api.github.com\/repos\/symplify\/easy-parallel\/zipball\/d60b7d6975b44ecf34b8bb39c48872c0995acce1",
"reference": "d60b7d6975b44ecf34b8bb39c48872c0995acce1",
"shasum": ""
},
"require": {
@ -3207,30 +3207,30 @@
"symfony\/console": "^6.1"
},
"conflict": {
"symplify\/autowire-array-parameter": "<11.1.12",
"symplify\/coding-standard": "<11.1.12",
"symplify\/composer-json-manipulator": "<11.1.12",
"symplify\/config-transformer": "<11.1.12",
"symplify\/easy-ci": "<11.1.12",
"symplify\/easy-coding-standard": "<11.1.12",
"symplify\/easy-testing": "<11.1.12",
"symplify\/monorepo-builder": "<11.1.12",
"symplify\/package-builder": "<11.1.12",
"symplify\/php-config-printer": "<11.1.12",
"symplify\/phpstan-extensions": "<11.1.12",
"symplify\/phpstan-rules": "<11.1.12",
"symplify\/rule-doc-generator": "<11.1.12",
"symplify\/rule-doc-generator-contracts": "<11.1.12",
"symplify\/smart-file-system": "<11.1.12",
"symplify\/symfony-static-dumper": "<11.1.12",
"symplify\/symplify-kernel": "<11.1.12",
"symplify\/vendor-patches": "<11.1.12"
"symplify\/autowire-array-parameter": "<11.1.16",
"symplify\/coding-standard": "<11.1.16",
"symplify\/composer-json-manipulator": "<11.1.16",
"symplify\/config-transformer": "<11.1.16",
"symplify\/easy-ci": "<11.1.16",
"symplify\/easy-coding-standard": "<11.1.16",
"symplify\/easy-testing": "<11.1.16",
"symplify\/monorepo-builder": "<11.1.16",
"symplify\/package-builder": "<11.1.16",
"symplify\/php-config-printer": "<11.1.16",
"symplify\/phpstan-extensions": "<11.1.16",
"symplify\/phpstan-rules": "<11.1.16",
"symplify\/rule-doc-generator": "<11.1.16",
"symplify\/rule-doc-generator-contracts": "<11.1.16",
"symplify\/smart-file-system": "<11.1.16",
"symplify\/symfony-static-dumper": "<11.1.16",
"symplify\/symplify-kernel": "<11.1.16",
"symplify\/vendor-patches": "<11.1.16"
},
"require-dev": {
"phpunit\/phpunit": "^9.5.23",
"symplify\/package-builder": "^11.1.12"
"symplify\/package-builder": "^11.1.16"
},
"time": "2022-10-24T19:27:28+00:00",
"time": "2022-10-27T10:44:47+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -3250,23 +3250,23 @@
"description": "Helper package for easier CLI project parallelization",
"support": {
"issues": "https:\/\/github.com\/symplify\/easy-parallel\/issues",
"source": "https:\/\/github.com\/symplify\/easy-parallel\/tree\/11.1.12"
"source": "https:\/\/github.com\/symplify\/easy-parallel\/tree\/11.1.16"
},
"install-path": "..\/symplify\/easy-parallel"
},
{
"name": "symplify\/rule-doc-generator-contracts",
"version": "11.1.12",
"version_normalized": "11.1.12.0",
"version": "11.1.16",
"version_normalized": "11.1.16.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symplify\/rule-doc-generator-contracts.git",
"reference": "398f989ff4024bd84bb4e3fc898a25127c16331c"
"reference": "ccb4e3f30e61e7ebd8cabb6d8917347debee0c0c"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/symplify\/rule-doc-generator-contracts\/zipball\/398f989ff4024bd84bb4e3fc898a25127c16331c",
"reference": "398f989ff4024bd84bb4e3fc898a25127c16331c",
"url": "https:\/\/api.github.com\/repos\/symplify\/rule-doc-generator-contracts\/zipball\/ccb4e3f30e61e7ebd8cabb6d8917347debee0c0c",
"reference": "ccb4e3f30e61e7ebd8cabb6d8917347debee0c0c",
"shasum": ""
},
"require": {
@ -3274,26 +3274,26 @@
"php": ">=8.1"
},
"conflict": {
"symplify\/autowire-array-parameter": "<11.1.12",
"symplify\/coding-standard": "<11.1.12",
"symplify\/composer-json-manipulator": "<11.1.12",
"symplify\/config-transformer": "<11.1.12",
"symplify\/easy-ci": "<11.1.12",
"symplify\/easy-coding-standard": "<11.1.12",
"symplify\/easy-parallel": "<11.1.12",
"symplify\/easy-testing": "<11.1.12",
"symplify\/monorepo-builder": "<11.1.12",
"symplify\/package-builder": "<11.1.12",
"symplify\/php-config-printer": "<11.1.12",
"symplify\/phpstan-extensions": "<11.1.12",
"symplify\/phpstan-rules": "<11.1.12",
"symplify\/rule-doc-generator": "<11.1.12",
"symplify\/smart-file-system": "<11.1.12",
"symplify\/symfony-static-dumper": "<11.1.12",
"symplify\/symplify-kernel": "<11.1.12",
"symplify\/vendor-patches": "<11.1.12"
"symplify\/autowire-array-parameter": "<11.1.16",
"symplify\/coding-standard": "<11.1.16",
"symplify\/composer-json-manipulator": "<11.1.16",
"symplify\/config-transformer": "<11.1.16",
"symplify\/easy-ci": "<11.1.16",
"symplify\/easy-coding-standard": "<11.1.16",
"symplify\/easy-parallel": "<11.1.16",
"symplify\/easy-testing": "<11.1.16",
"symplify\/monorepo-builder": "<11.1.16",
"symplify\/package-builder": "<11.1.16",
"symplify\/php-config-printer": "<11.1.16",
"symplify\/phpstan-extensions": "<11.1.16",
"symplify\/phpstan-rules": "<11.1.16",
"symplify\/rule-doc-generator": "<11.1.16",
"symplify\/smart-file-system": "<11.1.16",
"symplify\/symfony-static-dumper": "<11.1.16",
"symplify\/symplify-kernel": "<11.1.16",
"symplify\/vendor-patches": "<11.1.16"
},
"time": "2022-10-24T19:28:13+00:00",
"time": "2022-10-27T10:45:09+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -3312,7 +3312,7 @@
],
"description": "Contracts for production code of RuleDocGenerator",
"support": {
"source": "https:\/\/github.com\/symplify\/rule-doc-generator-contracts\/tree\/11.1.12"
"source": "https:\/\/github.com\/symplify\/rule-doc-generator-contracts\/tree\/11.1.16"
},
"funding": [
{

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-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' => 'dev-main 3b465ad'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main d75c674'), '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' => 'dev-main 2decdcf'), 'rector/rector-php-parser' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-php-parser', 'relative_install_path' => '../../rector-php-parser', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 9c21f5f'), 'rector/rector-phpoffice' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpoffice', 'relative_install_path' => '../../rector-phpoffice', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 294de0c'), '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' => 'dev-main 6fc267c'), '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' => 'dev-main 644c5a4'));
public const EXTENSIONS = array('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' => 'dev-main 17bdb82'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main da1013f'), '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' => 'dev-main 2decdcf'), 'rector/rector-php-parser' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-php-parser', 'relative_install_path' => '../../rector-php-parser', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 9c21f5f'), 'rector/rector-phpoffice' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpoffice', 'relative_install_path' => '../../rector-phpoffice', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 294de0c'), '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' => 'dev-main 6fc267c'), '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' => 'dev-main 644c5a4'));
private function __construct()
{
}

View File

@ -1,23 +0,0 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202210;
use Rector\Config\RectorConfig;
use Rector\Doctrine\Rector\Class_\BlameableBehaviorRector;
use Rector\Doctrine\Rector\Class_\LoggableBehaviorRector;
use Rector\Doctrine\Rector\Class_\SluggableBehaviorRector;
use Rector\Doctrine\Rector\Class_\SoftDeletableBehaviorRector;
use Rector\Doctrine\Rector\Class_\TimestampableBehaviorRector;
use Rector\Doctrine\Rector\Class_\TranslationBehaviorRector;
use Rector\Doctrine\Rector\Class_\TreeBehaviorRector;
# version gedmo/doctrine-extensions 2.x to knplabs/doctrine-behaviors 2.0
return static function (RectorConfig $rectorConfig) : void {
$rectorConfig->rule(TimestampableBehaviorRector::class);
$rectorConfig->rule(SluggableBehaviorRector::class);
$rectorConfig->rule(TreeBehaviorRector::class);
$rectorConfig->rule(TranslationBehaviorRector::class);
$rectorConfig->rule(SoftDeletableBehaviorRector::class);
$rectorConfig->rule(BlameableBehaviorRector::class);
$rectorConfig->rule(LoggableBehaviorRector::class);
};

View File

@ -1,63 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Doctrine\NodeAnalyzer;
use PhpParser\Node\Stmt\Class_;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover;
use Rector\Doctrine\ValueObject\PropertyNameAndPhpDocInfo;
use Rector\Doctrine\ValueObject\PropertyNamesAndPhpDocInfos;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeRemoval\NodeRemover;
final class TranslatablePropertyCollectorAndRemover
{
/**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover
*/
private $phpDocTagRemover;
/**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/
private $phpDocInfoFactory;
/**
* @readonly
* @var \Rector\NodeRemoval\NodeRemover
*/
private $nodeRemover;
/**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver
*/
private $nodeNameResolver;
public function __construct(PhpDocTagRemover $phpDocTagRemover, PhpDocInfoFactory $phpDocInfoFactory, NodeRemover $nodeRemover, NodeNameResolver $nodeNameResolver)
{
$this->phpDocTagRemover = $phpDocTagRemover;
$this->phpDocInfoFactory = $phpDocInfoFactory;
$this->nodeRemover = $nodeRemover;
$this->nodeNameResolver = $nodeNameResolver;
}
public function processClass(Class_ $class) : PropertyNamesAndPhpDocInfos
{
$propertyNameAndPhpDocInfos = [];
foreach ($class->getProperties() as $property) {
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
if ($phpDocInfo->hasByAnnotationClass('Gedmo\\Mapping\\Annotation\\Locale')) {
$this->nodeRemover->removeNode($property);
continue;
}
$doctrineAnnotationTagValueNode = $phpDocInfo->getByAnnotationClass('Gedmo\\Mapping\\Annotation\\Translatable');
if (!$doctrineAnnotationTagValueNode instanceof DoctrineAnnotationTagValueNode) {
continue;
}
$this->phpDocTagRemover->removeTagValueFromNode($phpDocInfo, $doctrineAnnotationTagValueNode);
$propertyName = $this->nodeNameResolver->getName($property);
$propertyNameAndPhpDocInfos[] = new PropertyNameAndPhpDocInfo($propertyName, $phpDocInfo);
$this->nodeRemover->removeNode($property);
}
return new PropertyNamesAndPhpDocInfos($propertyNameAndPhpDocInfos);
}
}

View File

@ -1,55 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Doctrine\NodeFactory;
use PhpParser\Builder\Method;
use PhpParser\Node\Expr;
use PhpParser\Node\Identifier;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Return_;
use PHPStan\Type\ArrayType;
use PHPStan\Type\MixedType;
use PHPStan\Type\StringType;
use Rector\BetterPhpDocParser\PhpDoc\ArrayItemNode;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger;
use Rector\PhpAttribute\AnnotationToAttributeMapper;
final class SluggableClassMethodFactory
{
/**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/
private $phpDocInfoFactory;
/**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
*/
private $phpDocTypeChanger;
/**
* @readonly
* @var \Rector\PhpAttribute\AnnotationToAttributeMapper
*/
private $annotationToAttributeMapper;
public function __construct(PhpDocInfoFactory $phpDocInfoFactory, PhpDocTypeChanger $phpDocTypeChanger, AnnotationToAttributeMapper $annotationToAttributeMapper)
{
$this->phpDocInfoFactory = $phpDocInfoFactory;
$this->phpDocTypeChanger = $phpDocTypeChanger;
$this->annotationToAttributeMapper = $annotationToAttributeMapper;
}
public function createGetSluggableFields(ArrayItemNode $arrayItemNode) : ClassMethod
{
$builderClassMethod = new Method('getSluggableFields');
$builderClassMethod->makePublic();
$builderClassMethod->setReturnType(new Identifier('array'));
/** @var Expr $slugFieldsExprs */
$slugFieldsExprs = $this->annotationToAttributeMapper->map($arrayItemNode->value);
$builderClassMethod->addStmt(new Return_($slugFieldsExprs));
$classMethod = $builderClassMethod->getNode();
$returnArrayType = new ArrayType(new MixedType(), new StringType());
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($classMethod);
$this->phpDocTypeChanger->changeReturnType($phpDocInfo, $returnArrayType);
return $classMethod;
}
}

View File

@ -1,47 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Doctrine\NodeFactory;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use PhpParser\NodeTraverser;
use PhpParser\NodeVisitor\NameResolver;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\PhpDoc\SpacelessPhpDocTagNode;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\Core\NodeManipulator\ClassInsertManipulator;
final class TranslationClassNodeFactory
{
/**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/
private $phpDocInfoFactory;
/**
* @readonly
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
*/
private $classInsertManipulator;
public function __construct(PhpDocInfoFactory $phpDocInfoFactory, ClassInsertManipulator $classInsertManipulator)
{
$this->phpDocInfoFactory = $phpDocInfoFactory;
$this->classInsertManipulator = $classInsertManipulator;
}
public function create(string $classShortName) : Class_
{
$class = new Class_($classShortName);
$class->implements[] = new FullyQualified('Knp\\DoctrineBehaviors\\Contract\\Entity\\TranslationInterface');
$this->classInsertManipulator->addAsFirstTrait($class, 'Knp\\DoctrineBehaviors\\Model\\Translatable\\TranslationTrait');
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($class);
$spacelessPhpDocTagNode = new SpacelessPhpDocTagNode('@ORM\\Entity', new DoctrineAnnotationTagValueNode(new IdentifierTypeNode('Doctrine\\ORM\\Mapping\\Entity'), null, []));
$phpDocInfo->addPhpDocTagNode($spacelessPhpDocTagNode);
// traverse with node name resolver, to to comply with PHPStan default parser
$nameResolver = new NameResolver(null, ['replaceNodes' => \false, 'preserveOriginalNames' => \true]);
$nodeTraverser = new NodeTraverser();
$nodeTraverser->addVisitor($nameResolver);
$nodeTraverser->traverse([$class]);
return $class;
}
}

View File

@ -121,10 +121,7 @@ final class ColumnPropertyTypeResolver
}
return $this->createPHPStanTypeFromDoctrineStringType($typeArrayItemNode->value, $isNullable);
}
/**
* @return \PHPStan\Type\MixedType|\PHPStan\Type\Type
*/
private function createPHPStanTypeFromDoctrineStringType(string $type, bool $isNullable)
private function createPHPStanTypeFromDoctrineStringType(string $type, bool $isNullable) : Type
{
$scalarType = $this->doctrineTypeToScalarType[$type] ?? null;
if (!$scalarType instanceof Type) {

View File

@ -1,149 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Doctrine\Rector\Class_;
use PhpParser\Node;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use Rector\Core\NodeManipulator\ClassInsertManipulator;
use Rector\Core\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see https://github.com/Atlantic18/DoctrineExtensions/blob/v2.4.x/doc/blameable.md
* @see https://github.com/KnpLabs/DoctrineBehaviors/blob/2cf2585710a9f23d0c8362a7b52f45bf89dc0d3a/docs/blameable.md
*
* @see \Rector\Doctrine\Tests\Rector\Class_\BlameableBehaviorRector\BlameableBehaviorRectorTest
*/
final class BlameableBehaviorRector extends AbstractRector
{
/**
* @readonly
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
*/
private $classInsertManipulator;
public function __construct(ClassInsertManipulator $classInsertManipulator)
{
$this->classInsertManipulator = $classInsertManipulator;
}
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Change Blameable from gedmo/doctrine-extensions to knplabs/doctrine-behaviors', [new CodeSample(<<<'CODE_SAMPLE'
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class SomeClass
{
/**
* @Gedmo\Blameable(on="create")
*/
private $createdBy;
/**
* @Gedmo\Blameable(on="update")
*/
private $updatedBy;
/**
* @Gedmo\Blameable(on="change", field={"title", "body"})
*/
private $contentChangedBy;
public function getCreatedBy()
{
return $this->createdBy;
}
public function getUpdatedBy()
{
return $this->updatedBy;
}
public function getContentChangedBy()
{
return $this->contentChangedBy;
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Contract\Entity\BlameableInterface;
use Knp\DoctrineBehaviors\Model\Blameable\BlameableTrait;
/**
* @ORM\Entity
*/
class SomeClass implements BlameableInterface
{
use BlameableTrait;
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [Class_::class];
}
/**
* @param Class_ $node
*/
public function refactor(Node $node) : ?Node
{
if (!$this->isGedmoBlameableClass($node)) {
return null;
}
$this->removeBlameablePropertiesAndMethods($node);
$this->classInsertManipulator->addAsFirstTrait($node, 'Knp\\DoctrineBehaviors\\Model\\Blameable\\BlameableTrait');
$node->implements[] = new FullyQualified('Knp\\DoctrineBehaviors\\Contract\\Entity\\BlameableInterface');
return $node;
}
private function isGedmoBlameableClass(Class_ $class) : bool
{
foreach ($class->getProperties() as $property) {
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
if ($phpDocInfo->hasByAnnotationClass('Gedmo\\Mapping\\Annotation\\Blameable')) {
return \true;
}
}
return \false;
}
private function removeBlameablePropertiesAndMethods(Class_ $class) : void
{
$removedPropertyNames = [];
foreach ($class->getProperties() as $property) {
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
if (!$phpDocInfo->hasByAnnotationClass('Gedmo\\Mapping\\Annotation\\Blameable')) {
continue;
}
/** @var string $propertyName */
$propertyName = $this->getName($property);
$removedPropertyNames[] = $propertyName;
$this->removeNode($property);
}
$this->removeSetterAndGetterByPropertyNames($class, $removedPropertyNames);
}
/**
* @param string[] $removedPropertyNames
*/
private function removeSetterAndGetterByPropertyNames(Class_ $class, array $removedPropertyNames) : void
{
foreach ($class->getMethods() as $classMethod) {
foreach ($removedPropertyNames as $removedPropertyName) {
// remove methods
$setMethodName = 'set' . \ucfirst($removedPropertyName);
$getMethodName = 'get' . \ucfirst($removedPropertyName);
if ($this->isNames($classMethod, [$setMethodName, $getMethodName])) {
continue;
}
$this->removeNode($classMethod);
}
}
}
}

View File

@ -1,144 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Doctrine\Rector\Class_;
use PhpParser\Node;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Property;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\PhpDoc\SpacelessPhpDocTagNode;
use Rector\Core\NodeManipulator\ClassInsertManipulator;
use Rector\Core\Rector\AbstractRector;
use Rector\PhpDocParser\PhpDocParser\PhpDocNodeTraverser;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see https://github.com/Atlantic18/DoctrineExtensions/blob/v2.4.x/doc/loggable.md
* @see https://github.com/KnpLabs/DoctrineBehaviors/blob/4e0677379dd4adf84178f662d08454a9627781a8/docs/loggable.md
*
* @see \Rector\Doctrine\Tests\Rector\Class_\LoggableBehaviorRector\LoggableBehaviorRectorTest
*/
final class LoggableBehaviorRector extends AbstractRector
{
/**
* @readonly
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
*/
private $classInsertManipulator;
public function __construct(ClassInsertManipulator $classInsertManipulator)
{
$this->classInsertManipulator = $classInsertManipulator;
}
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Change Loggable from gedmo/doctrine-extensions to knplabs/doctrine-behaviors', [new CodeSample(<<<'CODE_SAMPLE'
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @Gedmo\Loggable
*/
class SomeClass
{
/**
* @Gedmo\Versioned
* @ORM\Column(name="title", type="string", length=8)
*/
private $title;
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Model\Loggable\LoggableTrait;
use Knp\DoctrineBehaviors\Contract\Entity\LoggableInterface;
/**
* @ORM\Entity
*/
class SomeClass implements LoggableInterface
{
use LoggableTrait;
/**
* @ORM\Column(name="title", type="string", length=8)
*/
private $title;
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [Class_::class, Property::class];
}
/**
* @param Class_|Property $node
*/
public function refactor(Node $node) : ?Node
{
if ($node instanceof Class_) {
return $this->refactorClass($node);
}
return $this->refactorProperty($node);
}
private function refactorClass(Class_ $class) : ?\PhpParser\Node\Stmt\Class_
{
// change the node
$classPhpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($class);
$hasLoggableAnnotation = \false;
$phpDocNodeTraverser = new PhpDocNodeTraverser();
$phpDocNodeTraverser->traverseWithCallable($classPhpDocInfo->getPhpDocNode(), '', function ($node) use(&$hasLoggableAnnotation) : ?int {
if (!$node instanceof SpacelessPhpDocTagNode) {
return null;
}
if (!$node->value instanceof DoctrineAnnotationTagValueNode) {
return null;
}
$doctrineAnnotationTagValueNode = $node->value;
if (!$doctrineAnnotationTagValueNode->hasClassName('Gedmo\\Mapping\\Annotation\\Loggable')) {
return null;
}
$hasLoggableAnnotation = \true;
return PhpDocNodeTraverser::NODE_REMOVE;
});
if (!$hasLoggableAnnotation) {
return null;
}
// invoke phpdoc re-print as annotation was removed
$classPhpDocInfo->markAsChanged();
$this->classInsertManipulator->addAsFirstTrait($class, 'Knp\\DoctrineBehaviors\\Model\\Loggable\\LoggableTrait');
$class->implements[] = new FullyQualified('Knp\\DoctrineBehaviors\\Contract\\Entity\\LoggableInterface');
return $class;
}
private function refactorProperty(Property $property) : ?Property
{
// remove tag from properties
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
$hasChanged = \false;
$phpDocNodeTraverser = new PhpDocNodeTraverser();
$phpDocNodeTraverser->traverseWithCallable($phpDocInfo->getPhpDocNode(), '', function ($node) use($phpDocInfo, &$hasChanged) : ?int {
if (!$node instanceof SpacelessPhpDocTagNode) {
return null;
}
if (!$node->value instanceof DoctrineAnnotationTagValueNode) {
return null;
}
if (!$node->value->hasClassName('Gedmo\\Mapping\\Annotation\\Versioned')) {
return null;
}
$phpDocInfo->markAsChanged();
$hasChanged = \true;
return PhpDocNodeTraverser::NODE_REMOVE;
});
if (!$hasChanged) {
return null;
}
return $property;
}
}

View File

@ -1,125 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Doctrine\Rector\Class_;
use PhpParser\Node;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use Rector\BetterPhpDocParser\PhpDoc\ArrayItemNode;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\Core\NodeManipulator\ClassInsertManipulator;
use Rector\Core\Rector\AbstractRector;
use Rector\Doctrine\NodeFactory\SluggableClassMethodFactory;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see https://github.com/Atlantic18/DoctrineExtensions/blob/v2.4.x/doc/sluggable.md
* @see https://github.com/KnpLabs/DoctrineBehaviors/blob/4e0677379dd4adf84178f662d08454a9627781a8/docs/sluggable.md
*
* @see \Rector\Doctrine\Tests\Rector\Class_\SluggableBehaviorRector\SluggableBehaviorRectorTest
*/
final class SluggableBehaviorRector extends AbstractRector
{
/**
* @readonly
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
*/
private $classInsertManipulator;
/**
* @readonly
* @var \Rector\Doctrine\NodeFactory\SluggableClassMethodFactory
*/
private $sluggableClassMethodFactory;
public function __construct(ClassInsertManipulator $classInsertManipulator, SluggableClassMethodFactory $sluggableClassMethodFactory)
{
$this->classInsertManipulator = $classInsertManipulator;
$this->sluggableClassMethodFactory = $sluggableClassMethodFactory;
}
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Change Sluggable from gedmo/doctrine-extensions to knplabs/doctrine-behaviors', [new CodeSample(<<<'CODE_SAMPLE'
use Gedmo\Mapping\Annotation as Gedmo;
class SomeClass
{
/**
* @Gedmo\Slug(fields={"name"})
*/
private $slug;
public function getSlug(): ?string
{
return $this->slug;
}
public function setSlug(?string $slug): void
{
$this->slug = $slug;
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Gedmo\Mapping\Annotation as Gedmo;
use Knp\DoctrineBehaviors\Model\Sluggable\SluggableTrait;
use Knp\DoctrineBehaviors\Contract\Entity\SluggableInterface;
class SomeClass implements SluggableInterface
{
use SluggableTrait;
/**
* @return string[]
*/
public function getSluggableFields(): array
{
return ['name'];
}
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [Class_::class];
}
/**
* @param Class_ $node
*/
public function refactor(Node $node) : ?Node
{
$slugFieldsArrayItemNode = [];
$matchedProperty = null;
foreach ($node->getProperties() as $property) {
$propertyPhpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
$doctrineAnnotationTagValueNode = $propertyPhpDocInfo->getByAnnotationClass('Gedmo\\Mapping\\Annotation\\Slug');
if (!$doctrineAnnotationTagValueNode instanceof DoctrineAnnotationTagValueNode) {
continue;
}
$slugFieldsArrayItemNode = $doctrineAnnotationTagValueNode->getValue('fields');
$this->removeNode($property);
$matchedProperty = $property;
}
if ($matchedProperty === null) {
return null;
}
// remove property setter/getter
foreach ($node->getMethods() as $classMethod) {
if (!$this->isNames($classMethod, ['getSlug', 'setSlug'])) {
continue;
}
$this->removeNode($classMethod);
}
$this->classInsertManipulator->addAsFirstTrait($node, 'Knp\\DoctrineBehaviors\\Model\\Sluggable\\SluggableTrait');
$node->implements[] = new FullyQualified('Knp\\DoctrineBehaviors\\Contract\\Entity\\SluggableInterface');
if (!$slugFieldsArrayItemNode instanceof ArrayItemNode) {
return null;
}
$getSluggableClassMethod = $this->sluggableClassMethodFactory->createGetSluggableFields($slugFieldsArrayItemNode);
$this->classInsertManipulator->addAsFirstMethod($node, $getSluggableClassMethod);
return $node;
}
}

View File

@ -1,125 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Doctrine\Rector\Class_;
use PhpParser\Node;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use Rector\BetterPhpDocParser\PhpDoc\ArrayItemNode;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover;
use Rector\Core\NodeManipulator\ClassInsertManipulator;
use Rector\Core\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see https://github.com/Atlantic18/DoctrineExtensions/blob/v2.4.x/doc/softdeleteable.md
* @see https://github.com/KnpLabs/DoctrineBehaviors/blob/4e0677379dd4adf84178f662d08454a9627781a8/docs/soft-deletable.md
*
* @see \Rector\Doctrine\Tests\Rector\Class_\SoftDeletableBehaviorRector\SoftDeletableBehaviorRectorTest
*/
final class SoftDeletableBehaviorRector extends AbstractRector
{
/**
* @readonly
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
*/
private $classInsertManipulator;
/**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover
*/
private $phpDocTagRemover;
public function __construct(ClassInsertManipulator $classInsertManipulator, PhpDocTagRemover $phpDocTagRemover)
{
$this->classInsertManipulator = $classInsertManipulator;
$this->phpDocTagRemover = $phpDocTagRemover;
}
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Change SoftDeletable from gedmo/doctrine-extensions to knplabs/doctrine-behaviors', [new CodeSample(<<<'CODE_SAMPLE'
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false, hardDelete=true)
*/
class SomeClass
{
/**
* @ORM\Column(name="deletedAt", type="datetime", nullable=true)
*/
private $deletedAt;
public function getDeletedAt()
{
return $this->deletedAt;
}
public function setDeletedAt($deletedAt)
{
$this->deletedAt = $deletedAt;
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Knp\DoctrineBehaviors\Contract\Entity\SoftDeletableInterface;
use Knp\DoctrineBehaviors\Model\SoftDeletable\SoftDeletableTrait;
class SomeClass implements SoftDeletableInterface
{
use SoftDeletableTrait;
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [Class_::class];
}
/**
* @param Class_ $node
*/
public function refactor(Node $node) : ?Node
{
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
$doctrineAnnotationTagValueNode = $phpDocInfo->getByAnnotationClass('Gedmo\\Mapping\\Annotation\\SoftDeleteable');
if (!$doctrineAnnotationTagValueNode instanceof DoctrineAnnotationTagValueNode) {
return null;
}
$fieldNameArrayItemNode = $doctrineAnnotationTagValueNode->getValue('fieldName');
if (!$fieldNameArrayItemNode instanceof ArrayItemNode) {
return null;
}
if (!\is_string($fieldNameArrayItemNode->value)) {
return null;
}
$this->removePropertyAndClassMethods($node, $fieldNameArrayItemNode->value);
$this->classInsertManipulator->addAsFirstTrait($node, 'Knp\\DoctrineBehaviors\\Model\\SoftDeletable\\SoftDeletableTrait');
$node->implements[] = new FullyQualified('Knp\\DoctrineBehaviors\\Contract\\Entity\\SoftDeletableInterface');
$this->phpDocTagRemover->removeTagValueFromNode($phpDocInfo, $doctrineAnnotationTagValueNode);
return $node;
}
private function removePropertyAndClassMethods(Class_ $class, string $fieldName) : void
{
// remove property
foreach ($class->getProperties() as $property) {
if (!$this->isName($property, $fieldName)) {
continue;
}
$this->removeNode($property);
}
// remove methods
$setMethodName = 'set' . \ucfirst($fieldName);
$getMethodName = 'get' . \ucfirst($fieldName);
foreach ($class->getMethods() as $classMethod) {
if (!$this->isNames($classMethod, [$setMethodName, $getMethodName])) {
continue;
}
$this->removeNode($classMethod);
}
}
}

View File

@ -1,70 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Doctrine\Rector\Class_;
use PhpParser\Node;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use Rector\Core\NodeManipulator\ClassManipulator;
use Rector\Core\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see https://github.com/Atlantic18/DoctrineExtensions/blob/v2.4.x/doc/timestampable.md
* @see https://github.com/KnpLabs/DoctrineBehaviors/blob/4e0677379dd4adf84178f662d08454a9627781a8/docs/timestampable.md
*
* @see \Rector\Doctrine\Tests\Rector\Class_\TimestampableBehaviorRector\TimestampableBehaviorRectorTest
*/
final class TimestampableBehaviorRector extends AbstractRector
{
/**
* @readonly
* @var \Rector\Core\NodeManipulator\ClassManipulator
*/
private $classManipulator;
public function __construct(ClassManipulator $classManipulator)
{
$this->classManipulator = $classManipulator;
}
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Change Timestampable from gedmo/doctrine-extensions to knplabs/doctrine-behaviors', [new CodeSample(<<<'CODE_SAMPLE'
use Gedmo\Timestampable\Traits\TimestampableEntity;
class SomeClass
{
use TimestampableEntity;
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Knp\DoctrineBehaviors\Model\Timestampable\TimestampableTrait;
use Knp\DoctrineBehaviors\Contract\Entity\TimestampableInterface;
class SomeClass implements TimestampableInterface
{
use TimestampableTrait;
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [Class_::class];
}
/**
* @param Class_ $node
*/
public function refactor(Node $node) : ?Node
{
if (!$this->classManipulator->hasTrait($node, 'Gedmo\\Timestampable\\Traits\\TimestampableEntity')) {
return null;
}
$this->classManipulator->replaceTrait($node, 'Gedmo\\Timestampable\\Traits\\TimestampableEntity', 'Knp\\DoctrineBehaviors\\Model\\Timestampable\\TimestampableTrait');
$node->implements[] = new FullyQualified('Knp\\DoctrineBehaviors\\Contract\\Entity\\TimestampableInterface');
return $node;
}
}

View File

@ -1,208 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Doctrine\Rector\Class_;
use PhpParser\Node;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Namespace_;
use PHPStan\Type\ObjectType;
use Rector\Core\Application\FileSystem\RemovedAndAddedFilesCollector;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\NodeManipulator\ClassInsertManipulator;
use Rector\Core\Rector\AbstractRector;
use Rector\Doctrine\NodeAnalyzer\TranslatablePropertyCollectorAndRemover;
use Rector\Doctrine\NodeFactory\TranslationClassNodeFactory;
use Rector\Doctrine\ValueObject\PropertyNamesAndPhpDocInfos;
use Rector\FileSystemRector\ValueObject\AddedFileWithNodes;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see https://github.com/Atlantic18/DoctrineExtensions/blob/v2.4.x/doc/translatable.md
* @see https://github.com/KnpLabs/DoctrineBehaviors/blob/4e0677379dd4adf84178f662d08454a9627781a8/docs/translatable.md
*
* @see https://lab.axioma.lv/symfony2/pagebundle/commit/062f9f87add5740ea89072e376dd703f3188d2ce
*
* @see \Rector\Doctrine\Tests\Rector\Class_\TranslationBehaviorRector\TranslationBehaviorRectorTest
*/
final class TranslationBehaviorRector extends AbstractRector
{
/**
* @readonly
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
*/
private $classInsertManipulator;
/**
* @readonly
* @var \Rector\Doctrine\NodeFactory\TranslationClassNodeFactory
*/
private $translationClassNodeFactory;
/**
* @readonly
* @var \Rector\Doctrine\NodeAnalyzer\TranslatablePropertyCollectorAndRemover
*/
private $translatablePropertyCollectorAndRemover;
/**
* @readonly
* @var \Rector\Core\Application\FileSystem\RemovedAndAddedFilesCollector
*/
private $removedAndAddedFilesCollector;
public function __construct(ClassInsertManipulator $classInsertManipulator, TranslationClassNodeFactory $translationClassNodeFactory, TranslatablePropertyCollectorAndRemover $translatablePropertyCollectorAndRemover, RemovedAndAddedFilesCollector $removedAndAddedFilesCollector)
{
$this->classInsertManipulator = $classInsertManipulator;
$this->translationClassNodeFactory = $translationClassNodeFactory;
$this->translatablePropertyCollectorAndRemover = $translatablePropertyCollectorAndRemover;
$this->removedAndAddedFilesCollector = $removedAndAddedFilesCollector;
}
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Change Translation from gedmo/doctrine-extensions to knplabs/doctrine-behaviors', [new CodeSample(<<<'CODE_SAMPLE'
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Translatable\Translatable;
/**
* @ORM\Table
*/
class Article implements Translatable
{
/**
* @Gedmo\Translatable
* @ORM\Column(length=128)
*/
private $title;
/**
* @Gedmo\Locale
*/
private $locale;
public function setTitle($title)
{
$this->title = $title;
}
public function getTitle()
{
return $this->title;
}
public function setTranslatableLocale($locale)
{
$this->locale = $locale;
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Knp\DoctrineBehaviors\Model\Translatable\TranslatableTrait;
use Knp\DoctrineBehaviors\Contract\Entity\TranslatableInterface;
class SomeClass implements TranslatableInterface
{
use TranslatableTrait;
}
use Knp\DoctrineBehaviors\Contract\Entity\TranslationInterface;
use Knp\DoctrineBehaviors\Model\Translatable\TranslationTrait;
class SomeClassTranslation implements TranslationInterface
{
use TranslationTrait;
/**
* @ORM\Column(length=128)
*/
private $title;
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [Class_::class];
}
/**
* @param Class_ $node
*/
public function refactor(Node $node) : ?Node
{
$classType = $this->nodeTypeResolver->getType($node);
$translatableObjectType = new ObjectType('Gedmo\\Translatable\\Translatable');
if (!$translatableObjectType->isSuperTypeOf($classType)->yes()) {
return null;
}
if (!$this->hasImplements($node)) {
return null;
}
$this->removeClassInterface($node);
$this->classInsertManipulator->addAsFirstTrait($node, 'Knp\\DoctrineBehaviors\\Model\\Translatable\\TranslatableTrait');
$node->implements[] = new FullyQualified('Knp\\DoctrineBehaviors\\Contract\\Entity\\TranslatableInterface');
$propertyNamesAndPhpDocInfos = $this->translatablePropertyCollectorAndRemover->processClass($node);
$this->removeSetAndGetMethods($node, $propertyNamesAndPhpDocInfos->getPropertyNames());
$this->dumpEntityTranslation($node, $propertyNamesAndPhpDocInfos);
return $node;
}
/**
* @param string[] $removedPropertyNames
*/
private function removeSetAndGetMethods(Class_ $class, array $removedPropertyNames) : void
{
foreach ($removedPropertyNames as $removedPropertyName) {
foreach ($class->getMethods() as $classMethod) {
if ($this->isName($classMethod, 'set' . \ucfirst($removedPropertyName))) {
$this->removeNode($classMethod);
}
if ($this->isName($classMethod, 'get' . \ucfirst($removedPropertyName))) {
$this->removeNode($classMethod);
}
if ($this->isName($classMethod, 'setTranslatableLocale')) {
$this->removeNode($classMethod);
}
}
}
}
private function dumpEntityTranslation(Class_ $class, PropertyNamesAndPhpDocInfos $propertyNamesAndPhpDocInfos) : void
{
$filePath = $this->file->getFilePath();
$classShortName = $class->name . 'Translation';
$destinationFilePath = \dirname($filePath) . \DIRECTORY_SEPARATOR . $classShortName . '.php';
$parentNode = $class->getAttribute(AttributeKey::PARENT_NODE);
if (!$parentNode instanceof Namespace_) {
throw new ShouldNotHappenException();
}
$namespace = new Namespace_($parentNode->name);
$class = $this->translationClassNodeFactory->create($classShortName);
foreach ($propertyNamesAndPhpDocInfos->all() as $propertyNameAndPhpDocInfo) {
$property = $this->nodeFactory->createPrivateProperty($propertyNameAndPhpDocInfo->getPropertyName());
$property->setAttribute(AttributeKey::PHP_DOC_INFO, $propertyNameAndPhpDocInfo->getPhpDocInfo());
$class->stmts[] = $property;
}
$namespace->stmts[] = $class;
$addedFileWithNodes = new AddedFileWithNodes($destinationFilePath, [$namespace]);
$this->removedAndAddedFilesCollector->addAddedFile($addedFileWithNodes);
}
private function hasImplements(Class_ $class) : bool
{
foreach ($class->implements as $implement) {
if ($this->isName($implement, 'Gedmo\\Translatable\\Translatable')) {
return \true;
}
}
return \false;
}
private function removeClassInterface(Class_ $class) : void
{
foreach ($class->implements as $key => $implement) {
if (!$this->isName($implement, 'Gedmo\\Translatable\\Translatable')) {
continue;
}
unset($class->implements[$key]);
}
}
}

View File

@ -1,176 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Doctrine\Rector\Class_;
use PhpParser\Node;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Property;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover;
use Rector\Core\NodeManipulator\ClassInsertManipulator;
use Rector\Core\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
/**
* @see https://github.com/Atlantic18/DoctrineExtensions/blob/v2.4.x/doc/tree.md
* @see https://github.com/KnpLabs/DoctrineBehaviors/blob/4e0677379dd4adf84178f662d08454a9627781a8/docs/tree.md
*
* @see \Rector\Doctrine\Tests\Rector\Class_\TreeBehaviorRector\TreeBehaviorRectorTest
*/
final class TreeBehaviorRector extends AbstractRector
{
/**
* @readonly
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
*/
private $classInsertManipulator;
/**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover
*/
private $phpDocTagRemover;
public function __construct(ClassInsertManipulator $classInsertManipulator, PhpDocTagRemover $phpDocTagRemover)
{
$this->classInsertManipulator = $classInsertManipulator;
$this->phpDocTagRemover = $phpDocTagRemover;
}
public function getRuleDefinition() : RuleDefinition
{
return new RuleDefinition('Change Tree from gedmo/doctrine-extensions to knplabs/doctrine-behaviors', [new CodeSample(<<<'CODE_SAMPLE'
use Doctrine\Common\Collections\Collection;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @Gedmo\Tree(type="nested")
*/
class SomeClass
{
/**
* @Gedmo\TreeLeft
* @ORM\Column(name="lft", type="integer")
* @var int
*/
private $lft;
/**
* @Gedmo\TreeRight
* @ORM\Column(name="rgt", type="integer")
* @var int
*/
private $rgt;
/**
* @Gedmo\TreeLevel
* @ORM\Column(name="lvl", type="integer")
* @var int
*/
private $lvl;
/**
* @Gedmo\TreeRoot
* @ORM\ManyToOne(targetEntity="Category")
* @ORM\JoinColumn(name="tree_root", referencedColumnName="id", onDelete="CASCADE")
* @var Category
*/
private $root;
/**
* @Gedmo\TreeParent
* @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE")
* @var Category
*/
private $parent;
/**
* @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
* @var Category[]|Collection
*/
private $children;
public function getRoot(): self
{
return $this->root;
}
public function setParent(self $category): void
{
$this->parent = $category;
}
public function getParent(): self
{
return $this->parent;
}
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
use Knp\DoctrineBehaviors\Contract\Entity\TreeNodeInterface;
use Knp\DoctrineBehaviors\Model\Tree\TreeNodeTrait;
class SomeClass implements TreeNodeInterface
{
use TreeNodeTrait;
}
CODE_SAMPLE
)]);
}
/**
* @return array<class-string<Node>>
*/
public function getNodeTypes() : array
{
return [Class_::class];
}
/**
* @param Class_ $node
*/
public function refactor(Node $node) : ?Node
{
$propertyPhpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
$doctrineAnnotationTagValueNode = $propertyPhpDocInfo->getByAnnotationClass('Gedmo\\Mapping\\Annotation\\Tree');
if (!$doctrineAnnotationTagValueNode instanceof DoctrineAnnotationTagValueNode) {
return null;
}
// we're in a tree entity
$this->phpDocTagRemover->removeTagValueFromNode($propertyPhpDocInfo, $doctrineAnnotationTagValueNode);
$node->implements[] = new FullyQualified('Knp\\DoctrineBehaviors\\Contract\\Entity\\TreeNodeInterface');
$this->classInsertManipulator->addAsFirstTrait($node, 'Knp\\DoctrineBehaviors\\Model\\Tree\\TreeNodeTrait');
// remove all tree-related properties and their getters and setters - it's handled by behavior trait
$removedPropertyNames = [];
foreach ($node->getProperties() as $property) {
if (!$this->shouldRemoveProperty($property)) {
continue;
}
/** @var string $propertyName */
$propertyName = $this->getName($property);
$removedPropertyNames[] = $propertyName;
$this->removeNode($property);
}
$this->removeClassMethodsForProperties($node, $removedPropertyNames);
return $node;
}
private function shouldRemoveProperty(Property $property) : bool
{
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
return $phpDocInfo->hasByAnnotationClasses(['Gedmo\\Mapping\\Annotation\\TreeLeft', 'Gedmo\\Mapping\\Annotation\\TreeRight', 'Gedmo\\Mapping\\Annotation\\TreeRoot', 'Gedmo\\Mapping\\Annotation\\TreeParent', 'Gedmo\\Mapping\\Annotation\\TreeLevel']);
}
/**
* @param string[] $removedPropertyNames
*/
private function removeClassMethodsForProperties(Class_ $class, array $removedPropertyNames) : void
{
foreach ($removedPropertyNames as $removedPropertyName) {
foreach ($class->getMethods() as $classMethod) {
if ($this->isName($classMethod, 'get' . \ucfirst($removedPropertyName))) {
$this->removeNode($classMethod);
}
if ($this->isName($classMethod, 'set' . \ucfirst($removedPropertyName))) {
$this->removeNode($classMethod);
}
}
}
}
}

View File

@ -37,10 +37,6 @@ final class DoctrineSetList implements SetListInterface
* @var string
*/
public const DOCTRINE_DBAL_30 = __DIR__ . '/../../config/sets/doctrine-dbal-30.php';
/**
* @var string
*/
public const DOCTRINE_GEDMO_TO_KNPLABS = __DIR__ . '/../../config/sets/doctrine-gedmo-to-knplabs.php';
/**
* @var string
*/

View File

@ -1,32 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Doctrine\ValueObject;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
final class PropertyNameAndPhpDocInfo
{
/**
* @readonly
* @var string
*/
private $propertyName;
/**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo
*/
private $phpDocInfo;
public function __construct(string $propertyName, PhpDocInfo $phpDocInfo)
{
$this->propertyName = $propertyName;
$this->phpDocInfo = $phpDocInfo;
}
public function getPropertyName() : string
{
return $this->propertyName;
}
public function getPhpDocInfo() : PhpDocInfo
{
return $this->phpDocInfo;
}
}

View File

@ -1,38 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\Doctrine\ValueObject;
final class PropertyNamesAndPhpDocInfos
{
/**
* @var PropertyNameAndPhpDocInfo[]
* @readonly
*/
private $propertyNameAndPhpDocInfos;
/**
* @param PropertyNameAndPhpDocInfo[] $propertyNameAndPhpDocInfos
*/
public function __construct(array $propertyNameAndPhpDocInfos)
{
$this->propertyNameAndPhpDocInfos = $propertyNameAndPhpDocInfos;
}
/**
* @return string[]
*/
public function getPropertyNames() : array
{
$propertyNames = [];
foreach ($this->propertyNameAndPhpDocInfos as $propertyNameAndPhpDocInfo) {
$propertyNames[] = $propertyNameAndPhpDocInfo->getPropertyName();
}
return $propertyNames;
}
/**
* @return PropertyNameAndPhpDocInfo[]
*/
public function all() : array
{
return $this->propertyNameAndPhpDocInfos;
}
}

View File

@ -1,4 +1,4 @@
# 111 Rules Overview
# 112 Rules Overview
## ArrowFunctionToAnonymousFunctionRector
@ -599,6 +599,26 @@ Replace the 2nd argument of `dirname()`
<br>
## DowngradeEnumExistsRector
Replace `enum_exists()` function
-
class: [`Rector\DowngradePhp81\Rector\FuncCall\DowngradeEnumExistsRector`](../rules/DowngradePhp81/Rector/FuncCall/DowngradeEnumExistsRector.php)
```diff
-enum_exists('SomeEnum', true);
+$enumExists = function (string $enum, bool $autoload = true) : bool {
+ if (function_exists('enum_exists')) {
+ return enum_exists($enum, $autoload);
+ }
+ return $autoload && class_exists($enum) && false;
+};
+$enumExists('SomeEnum', true);
```
<br>
## DowngradeEnumToConstantListClassRector
Downgrade enum to constant list class

View File

@ -34,7 +34,7 @@ final class EnumAnalyzer
}
public function resolveType(ClassReflection $classReflection) : ?Identifier
{
$class = $this->astResolver->resolveClassFromClassReflection($classReflection, $classReflection->getName());
$class = $this->astResolver->resolveClassFromClassReflection($classReflection);
if (!$class instanceof Enum_) {
throw new ShouldNotHappenException();
}

View File

@ -9,8 +9,8 @@
},
"require-dev": {
"phpunit\/phpunit": "^9.5.23",
"symplify\/package-builder": "^11.1.12",
"symplify\/symplify-kernel": "^11.1.12"
"symplify\/package-builder": "^11.1.16",
"symplify\/symplify-kernel": "^11.1.16"
},
"autoload": {
"psr-4": {
@ -28,24 +28,24 @@
}
},
"conflict": {
"symplify\/composer-json-manipulator": "<11.1.12",
"symplify\/easy-coding-standard": "<11.1.12",
"symplify\/phpstan-rules": "<11.1.12",
"symplify\/easy-testing": "<11.1.12",
"symplify\/rule-doc-generator-contracts": "<11.1.12",
"symplify\/php-config-printer": "<11.1.12",
"symplify\/phpstan-extensions": "<11.1.12",
"symplify\/rule-doc-generator": "<11.1.12",
"symplify\/vendor-patches": "<11.1.12",
"symplify\/smart-file-system": "<11.1.12",
"symplify\/symfony-static-dumper": "<11.1.12",
"symplify\/symplify-kernel": "<11.1.12",
"symplify\/monorepo-builder": "<11.1.12",
"symplify\/config-transformer": "<11.1.12",
"symplify\/easy-ci": "<11.1.12",
"symplify\/coding-standard": "<11.1.12",
"symplify\/easy-parallel": "<11.1.12",
"symplify\/package-builder": "<11.1.12"
"symplify\/composer-json-manipulator": "<11.1.16",
"symplify\/easy-coding-standard": "<11.1.16",
"symplify\/phpstan-rules": "<11.1.16",
"symplify\/easy-testing": "<11.1.16",
"symplify\/rule-doc-generator-contracts": "<11.1.16",
"symplify\/php-config-printer": "<11.1.16",
"symplify\/phpstan-extensions": "<11.1.16",
"symplify\/rule-doc-generator": "<11.1.16",
"symplify\/vendor-patches": "<11.1.16",
"symplify\/smart-file-system": "<11.1.16",
"symplify\/symfony-static-dumper": "<11.1.16",
"symplify\/symplify-kernel": "<11.1.16",
"symplify\/monorepo-builder": "<11.1.16",
"symplify\/config-transformer": "<11.1.16",
"symplify\/easy-ci": "<11.1.16",
"symplify\/coding-standard": "<11.1.16",
"symplify\/easy-parallel": "<11.1.16",
"symplify\/package-builder": "<11.1.16"
},
"minimum-stability": "dev",
"prefer-stable": true

View File

@ -30,7 +30,8 @@ final class AutowireArrayParameterCompilerPass implements CompilerPassInterface
* Classes that create circular dependencies
*
* @var string[]
* @noRector
* @noRector \Rector\Privatization\Rector\Property\ChangeReadOnlyPropertyWithDefaultValueToConstantRector
* @noRector \Rector\Php55\Rector\String_\StringClassNameToClassConstantRector
*/
private $excludedFatalClasses = ['RectorPrefix202210\\Symfony\\Component\\Form\\FormExtensionInterface', 'RectorPrefix202210\\Symfony\\Component\\Asset\\PackageInterface', 'RectorPrefix202210\\Symfony\\Component\\Config\\Loader\\LoaderInterface', 'RectorPrefix202210\\Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\ContextProviderInterface', 'RectorPrefix202210\\EasyCorp\\Bundle\\EasyAdminBundle\\Form\\Type\\Configurator\\TypeConfiguratorInterface', 'RectorPrefix202210\\Sonata\\CoreBundle\\Model\\Adapter\\AdapterInterface', 'RectorPrefix202210\\Sonata\\Doctrine\\Adapter\\AdapterChain', 'RectorPrefix202210\\Sonata\\Twig\\Extension\\TemplateExtension', 'RectorPrefix202210\\Symfony\\Component\\HttpKernel\\KernelInterface'];
/**

View File

@ -11,7 +11,7 @@
"symfony\/console": "^6.1"
},
"require-dev": {
"symplify\/package-builder": "^11.1.12",
"symplify\/package-builder": "^11.1.16",
"phpunit\/phpunit": "^9.5.23"
},
"autoload": {
@ -33,24 +33,24 @@
"platform-check": false
},
"conflict": {
"symplify\/easy-coding-standard": "<11.1.12",
"symplify\/phpstan-rules": "<11.1.12",
"symplify\/easy-testing": "<11.1.12",
"symplify\/rule-doc-generator-contracts": "<11.1.12",
"symplify\/php-config-printer": "<11.1.12",
"symplify\/autowire-array-parameter": "<11.1.12",
"symplify\/phpstan-extensions": "<11.1.12",
"symplify\/rule-doc-generator": "<11.1.12",
"symplify\/vendor-patches": "<11.1.12",
"symplify\/symfony-static-dumper": "<11.1.12",
"symplify\/config-transformer": "<11.1.12",
"symplify\/easy-ci": "<11.1.12",
"symplify\/coding-standard": "<11.1.12",
"symplify\/composer-json-manipulator": "<11.1.12",
"symplify\/smart-file-system": "<11.1.12",
"symplify\/monorepo-builder": "<11.1.12",
"symplify\/symplify-kernel": "<11.1.12",
"symplify\/package-builder": "<11.1.12"
"symplify\/easy-coding-standard": "<11.1.16",
"symplify\/phpstan-rules": "<11.1.16",
"symplify\/easy-testing": "<11.1.16",
"symplify\/rule-doc-generator-contracts": "<11.1.16",
"symplify\/php-config-printer": "<11.1.16",
"symplify\/autowire-array-parameter": "<11.1.16",
"symplify\/phpstan-extensions": "<11.1.16",
"symplify\/rule-doc-generator": "<11.1.16",
"symplify\/vendor-patches": "<11.1.16",
"symplify\/symfony-static-dumper": "<11.1.16",
"symplify\/config-transformer": "<11.1.16",
"symplify\/easy-ci": "<11.1.16",
"symplify\/coding-standard": "<11.1.16",
"symplify\/composer-json-manipulator": "<11.1.16",
"symplify\/smart-file-system": "<11.1.16",
"symplify\/monorepo-builder": "<11.1.16",
"symplify\/symplify-kernel": "<11.1.16",
"symplify\/package-builder": "<11.1.16"
},
"minimum-stability": "dev",
"prefer-stable": true

View File

@ -17,24 +17,24 @@
}
},
"conflict": {
"symplify\/composer-json-manipulator": "<11.1.12",
"symplify\/easy-coding-standard": "<11.1.12",
"symplify\/phpstan-rules": "<11.1.12",
"symplify\/easy-testing": "<11.1.12",
"symplify\/php-config-printer": "<11.1.12",
"symplify\/autowire-array-parameter": "<11.1.12",
"symplify\/package-builder": "<11.1.12",
"symplify\/phpstan-extensions": "<11.1.12",
"symplify\/rule-doc-generator": "<11.1.12",
"symplify\/vendor-patches": "<11.1.12",
"symplify\/smart-file-system": "<11.1.12",
"symplify\/symfony-static-dumper": "<11.1.12",
"symplify\/symplify-kernel": "<11.1.12",
"symplify\/monorepo-builder": "<11.1.12",
"symplify\/config-transformer": "<11.1.12",
"symplify\/easy-ci": "<11.1.12",
"symplify\/coding-standard": "<11.1.12",
"symplify\/easy-parallel": "<11.1.12"
"symplify\/composer-json-manipulator": "<11.1.16",
"symplify\/easy-coding-standard": "<11.1.16",
"symplify\/phpstan-rules": "<11.1.16",
"symplify\/easy-testing": "<11.1.16",
"symplify\/php-config-printer": "<11.1.16",
"symplify\/autowire-array-parameter": "<11.1.16",
"symplify\/package-builder": "<11.1.16",
"symplify\/phpstan-extensions": "<11.1.16",
"symplify\/rule-doc-generator": "<11.1.16",
"symplify\/vendor-patches": "<11.1.16",
"symplify\/smart-file-system": "<11.1.16",
"symplify\/symfony-static-dumper": "<11.1.16",
"symplify\/symplify-kernel": "<11.1.16",
"symplify\/monorepo-builder": "<11.1.16",
"symplify\/config-transformer": "<11.1.16",
"symplify\/easy-ci": "<11.1.16",
"symplify\/coding-standard": "<11.1.16",
"symplify\/easy-parallel": "<11.1.16"
},
"minimum-stability": "dev",
"prefer-stable": true