mirror of
https://github.com/rectorphp/rector.git
synced 2025-03-14 12:29:43 +01:00
Updated Rector to commit bf2f6dd0e9a4b0abccdc345e588f1f713452848b
bf2f6dd0e9
[Php71] Skip iterable on CountOnNullRector (#1691)
This commit is contained in:
parent
078050a017
commit
bc1b388847
2
vendor/autoload.php
vendored
2
vendor/autoload.php
vendored
@ -4,4 +4,4 @@
|
|||||||
|
|
||||||
require_once __DIR__ . '/composer/autoload_real.php';
|
require_once __DIR__ . '/composer/autoload_real.php';
|
||||||
|
|
||||||
return ComposerAutoloaderInit45bdedca4f816bd4757927bb4025ea19::getLoader();
|
return ComposerAutoloaderInit1b9205f82305e30ba10ce859891b7d1f::getLoader();
|
||||||
|
5
vendor/composer/autoload_classmap.php
vendored
5
vendor/composer/autoload_classmap.php
vendored
@ -1886,12 +1886,13 @@ return array(
|
|||||||
'Rector\\DependencyInjection\\Rector\\ClassMethod\\AddMethodParentCallRector' => $baseDir . '/rules/DependencyInjection/Rector/ClassMethod/AddMethodParentCallRector.php',
|
'Rector\\DependencyInjection\\Rector\\ClassMethod\\AddMethodParentCallRector' => $baseDir . '/rules/DependencyInjection/Rector/ClassMethod/AddMethodParentCallRector.php',
|
||||||
'Rector\\DependencyInjection\\Rector\\Class_\\ActionInjectionToConstructorInjectionRector' => $baseDir . '/rules/DependencyInjection/Rector/Class_/ActionInjectionToConstructorInjectionRector.php',
|
'Rector\\DependencyInjection\\Rector\\Class_\\ActionInjectionToConstructorInjectionRector' => $baseDir . '/rules/DependencyInjection/Rector/Class_/ActionInjectionToConstructorInjectionRector.php',
|
||||||
'Rector\\Doctrine\\NodeAnalyzer\\AssignPropertyFetchAnalyzer' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/AssignPropertyFetchAnalyzer.php',
|
'Rector\\Doctrine\\NodeAnalyzer\\AssignPropertyFetchAnalyzer' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/AssignPropertyFetchAnalyzer.php',
|
||||||
'Rector\\Doctrine\\NodeAnalyzer\\AttributeArgValueResolver' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/AttributeArgValueResolver.php',
|
'Rector\\Doctrine\\NodeAnalyzer\\AttributeCleaner' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/AttributeCleaner.php',
|
||||||
'Rector\\Doctrine\\NodeAnalyzer\\AttributeFinder' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/AttributeFinder.php',
|
'Rector\\Doctrine\\NodeAnalyzer\\AttributeFinder' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/AttributeFinder.php',
|
||||||
'Rector\\Doctrine\\NodeAnalyzer\\ConstructorAssignPropertyAnalyzer' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/ConstructorAssignPropertyAnalyzer.php',
|
'Rector\\Doctrine\\NodeAnalyzer\\ConstructorAssignPropertyAnalyzer' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/ConstructorAssignPropertyAnalyzer.php',
|
||||||
'Rector\\Doctrine\\NodeAnalyzer\\EntityObjectTypeResolver' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/EntityObjectTypeResolver.php',
|
'Rector\\Doctrine\\NodeAnalyzer\\EntityObjectTypeResolver' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/EntityObjectTypeResolver.php',
|
||||||
'Rector\\Doctrine\\NodeAnalyzer\\MethodCallNameOnTypeResolver' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/MethodCallNameOnTypeResolver.php',
|
'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\\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\\NodeAnalyzer\\TranslatablePropertyCollectorAndRemover' => $vendorDir . '/rector/rector-doctrine/src/NodeAnalyzer/TranslatablePropertyCollectorAndRemover.php',
|
||||||
'Rector\\Doctrine\\NodeFactory\\ConstructClassMethodFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/ConstructClassMethodFactory.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',
|
'Rector\\Doctrine\\NodeFactory\\ConstructorClassMethodAssignFactory' => $vendorDir . '/rector/rector-doctrine/src/NodeFactory/ConstructorClassMethodAssignFactory.php',
|
||||||
@ -1946,7 +1947,9 @@ return array(
|
|||||||
'Rector\\Doctrine\\TypeAnalyzer\\CollectionVarTagValueNodeResolver' => $vendorDir . '/rector/rector-doctrine/src/TypeAnalyzer/CollectionVarTagValueNodeResolver.php',
|
'Rector\\Doctrine\\TypeAnalyzer\\CollectionVarTagValueNodeResolver' => $vendorDir . '/rector/rector-doctrine/src/TypeAnalyzer/CollectionVarTagValueNodeResolver.php',
|
||||||
'Rector\\Doctrine\\TypeAnalyzer\\TypeFinder' => $vendorDir . '/rector/rector-doctrine/src/TypeAnalyzer/TypeFinder.php',
|
'Rector\\Doctrine\\TypeAnalyzer\\TypeFinder' => $vendorDir . '/rector/rector-doctrine/src/TypeAnalyzer/TypeFinder.php',
|
||||||
'Rector\\Doctrine\\Type\\RepositoryTypeFactory' => $vendorDir . '/rector/rector-doctrine/src/Type/RepositoryTypeFactory.php',
|
'Rector\\Doctrine\\Type\\RepositoryTypeFactory' => $vendorDir . '/rector/rector-doctrine/src/Type/RepositoryTypeFactory.php',
|
||||||
|
'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\\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\\PropertyNameAndPhpDocInfo' => $vendorDir . '/rector/rector-doctrine/src/ValueObject/PropertyNameAndPhpDocInfo.php',
|
||||||
'Rector\\Doctrine\\ValueObject\\PropertyNamesAndPhpDocInfos' => $vendorDir . '/rector/rector-doctrine/src/ValueObject/PropertyNamesAndPhpDocInfos.php',
|
'Rector\\Doctrine\\ValueObject\\PropertyNamesAndPhpDocInfos' => $vendorDir . '/rector/rector-doctrine/src/ValueObject/PropertyNamesAndPhpDocInfos.php',
|
||||||
'Rector\\DowngradePhp53\\Rector\\Dir\\DirConstToFileConstRector' => $baseDir . '/rules/DowngradePhp53/Rector/Dir/DirConstToFileConstRector.php',
|
'Rector\\DowngradePhp53\\Rector\\Dir\\DirConstToFileConstRector' => $baseDir . '/rules/DowngradePhp53/Rector/Dir/DirConstToFileConstRector.php',
|
||||||
|
14
vendor/composer/autoload_real.php
vendored
14
vendor/composer/autoload_real.php
vendored
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
// autoload_real.php @generated by Composer
|
// autoload_real.php @generated by Composer
|
||||||
|
|
||||||
class ComposerAutoloaderInit45bdedca4f816bd4757927bb4025ea19
|
class ComposerAutoloaderInit1b9205f82305e30ba10ce859891b7d1f
|
||||||
{
|
{
|
||||||
private static $loader;
|
private static $loader;
|
||||||
|
|
||||||
@ -22,15 +22,15 @@ class ComposerAutoloaderInit45bdedca4f816bd4757927bb4025ea19
|
|||||||
return self::$loader;
|
return self::$loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInit45bdedca4f816bd4757927bb4025ea19', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInit1b9205f82305e30ba10ce859891b7d1f', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInit45bdedca4f816bd4757927bb4025ea19', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInit1b9205f82305e30ba10ce859891b7d1f', 'loadClassLoader'));
|
||||||
|
|
||||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||||
if ($useStaticLoader) {
|
if ($useStaticLoader) {
|
||||||
require __DIR__ . '/autoload_static.php';
|
require __DIR__ . '/autoload_static.php';
|
||||||
|
|
||||||
call_user_func(\Composer\Autoload\ComposerStaticInit45bdedca4f816bd4757927bb4025ea19::getInitializer($loader));
|
call_user_func(\Composer\Autoload\ComposerStaticInit1b9205f82305e30ba10ce859891b7d1f::getInitializer($loader));
|
||||||
} else {
|
} else {
|
||||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||||
if ($classMap) {
|
if ($classMap) {
|
||||||
@ -42,12 +42,12 @@ class ComposerAutoloaderInit45bdedca4f816bd4757927bb4025ea19
|
|||||||
$loader->register(true);
|
$loader->register(true);
|
||||||
|
|
||||||
if ($useStaticLoader) {
|
if ($useStaticLoader) {
|
||||||
$includeFiles = Composer\Autoload\ComposerStaticInit45bdedca4f816bd4757927bb4025ea19::$files;
|
$includeFiles = Composer\Autoload\ComposerStaticInit1b9205f82305e30ba10ce859891b7d1f::$files;
|
||||||
} else {
|
} else {
|
||||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
$includeFiles = require __DIR__ . '/autoload_files.php';
|
||||||
}
|
}
|
||||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||||
composerRequire45bdedca4f816bd4757927bb4025ea19($fileIdentifier, $file);
|
composerRequire1b9205f82305e30ba10ce859891b7d1f($fileIdentifier, $file);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $loader;
|
return $loader;
|
||||||
@ -59,7 +59,7 @@ class ComposerAutoloaderInit45bdedca4f816bd4757927bb4025ea19
|
|||||||
* @param string $file
|
* @param string $file
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function composerRequire45bdedca4f816bd4757927bb4025ea19($fileIdentifier, $file)
|
function composerRequire1b9205f82305e30ba10ce859891b7d1f($fileIdentifier, $file)
|
||||||
{
|
{
|
||||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||||
|
13
vendor/composer/autoload_static.php
vendored
13
vendor/composer/autoload_static.php
vendored
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
namespace Composer\Autoload;
|
namespace Composer\Autoload;
|
||||||
|
|
||||||
class ComposerStaticInit45bdedca4f816bd4757927bb4025ea19
|
class ComposerStaticInit1b9205f82305e30ba10ce859891b7d1f
|
||||||
{
|
{
|
||||||
public static $files = array (
|
public static $files = array (
|
||||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||||
@ -2281,12 +2281,13 @@ class ComposerStaticInit45bdedca4f816bd4757927bb4025ea19
|
|||||||
'Rector\\DependencyInjection\\Rector\\ClassMethod\\AddMethodParentCallRector' => __DIR__ . '/../..' . '/rules/DependencyInjection/Rector/ClassMethod/AddMethodParentCallRector.php',
|
'Rector\\DependencyInjection\\Rector\\ClassMethod\\AddMethodParentCallRector' => __DIR__ . '/../..' . '/rules/DependencyInjection/Rector/ClassMethod/AddMethodParentCallRector.php',
|
||||||
'Rector\\DependencyInjection\\Rector\\Class_\\ActionInjectionToConstructorInjectionRector' => __DIR__ . '/../..' . '/rules/DependencyInjection/Rector/Class_/ActionInjectionToConstructorInjectionRector.php',
|
'Rector\\DependencyInjection\\Rector\\Class_\\ActionInjectionToConstructorInjectionRector' => __DIR__ . '/../..' . '/rules/DependencyInjection/Rector/Class_/ActionInjectionToConstructorInjectionRector.php',
|
||||||
'Rector\\Doctrine\\NodeAnalyzer\\AssignPropertyFetchAnalyzer' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/AssignPropertyFetchAnalyzer.php',
|
'Rector\\Doctrine\\NodeAnalyzer\\AssignPropertyFetchAnalyzer' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/AssignPropertyFetchAnalyzer.php',
|
||||||
'Rector\\Doctrine\\NodeAnalyzer\\AttributeArgValueResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/AttributeArgValueResolver.php',
|
'Rector\\Doctrine\\NodeAnalyzer\\AttributeCleaner' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/AttributeCleaner.php',
|
||||||
'Rector\\Doctrine\\NodeAnalyzer\\AttributeFinder' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/AttributeFinder.php',
|
'Rector\\Doctrine\\NodeAnalyzer\\AttributeFinder' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/AttributeFinder.php',
|
||||||
'Rector\\Doctrine\\NodeAnalyzer\\ConstructorAssignPropertyAnalyzer' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/ConstructorAssignPropertyAnalyzer.php',
|
'Rector\\Doctrine\\NodeAnalyzer\\ConstructorAssignPropertyAnalyzer' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/ConstructorAssignPropertyAnalyzer.php',
|
||||||
'Rector\\Doctrine\\NodeAnalyzer\\EntityObjectTypeResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/EntityObjectTypeResolver.php',
|
'Rector\\Doctrine\\NodeAnalyzer\\EntityObjectTypeResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/EntityObjectTypeResolver.php',
|
||||||
'Rector\\Doctrine\\NodeAnalyzer\\MethodCallNameOnTypeResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/MethodCallNameOnTypeResolver.php',
|
'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\\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\\NodeAnalyzer\\TranslatablePropertyCollectorAndRemover' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeAnalyzer/TranslatablePropertyCollectorAndRemover.php',
|
||||||
'Rector\\Doctrine\\NodeFactory\\ConstructClassMethodFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/ConstructClassMethodFactory.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',
|
'Rector\\Doctrine\\NodeFactory\\ConstructorClassMethodAssignFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/NodeFactory/ConstructorClassMethodAssignFactory.php',
|
||||||
@ -2341,7 +2342,9 @@ class ComposerStaticInit45bdedca4f816bd4757927bb4025ea19
|
|||||||
'Rector\\Doctrine\\TypeAnalyzer\\CollectionVarTagValueNodeResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/TypeAnalyzer/CollectionVarTagValueNodeResolver.php',
|
'Rector\\Doctrine\\TypeAnalyzer\\CollectionVarTagValueNodeResolver' => __DIR__ . '/..' . '/rector/rector-doctrine/src/TypeAnalyzer/CollectionVarTagValueNodeResolver.php',
|
||||||
'Rector\\Doctrine\\TypeAnalyzer\\TypeFinder' => __DIR__ . '/..' . '/rector/rector-doctrine/src/TypeAnalyzer/TypeFinder.php',
|
'Rector\\Doctrine\\TypeAnalyzer\\TypeFinder' => __DIR__ . '/..' . '/rector/rector-doctrine/src/TypeAnalyzer/TypeFinder.php',
|
||||||
'Rector\\Doctrine\\Type\\RepositoryTypeFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Type/RepositoryTypeFactory.php',
|
'Rector\\Doctrine\\Type\\RepositoryTypeFactory' => __DIR__ . '/..' . '/rector/rector-doctrine/src/Type/RepositoryTypeFactory.php',
|
||||||
|
'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\\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\\PropertyNameAndPhpDocInfo' => __DIR__ . '/..' . '/rector/rector-doctrine/src/ValueObject/PropertyNameAndPhpDocInfo.php',
|
||||||
'Rector\\Doctrine\\ValueObject\\PropertyNamesAndPhpDocInfos' => __DIR__ . '/..' . '/rector/rector-doctrine/src/ValueObject/PropertyNamesAndPhpDocInfos.php',
|
'Rector\\Doctrine\\ValueObject\\PropertyNamesAndPhpDocInfos' => __DIR__ . '/..' . '/rector/rector-doctrine/src/ValueObject/PropertyNamesAndPhpDocInfos.php',
|
||||||
'Rector\\DowngradePhp53\\Rector\\Dir\\DirConstToFileConstRector' => __DIR__ . '/../..' . '/rules/DowngradePhp53/Rector/Dir/DirConstToFileConstRector.php',
|
'Rector\\DowngradePhp53\\Rector\\Dir\\DirConstToFileConstRector' => __DIR__ . '/../..' . '/rules/DowngradePhp53/Rector/Dir/DirConstToFileConstRector.php',
|
||||||
@ -3867,9 +3870,9 @@ class ComposerStaticInit45bdedca4f816bd4757927bb4025ea19
|
|||||||
public static function getInitializer(ClassLoader $loader)
|
public static function getInitializer(ClassLoader $loader)
|
||||||
{
|
{
|
||||||
return \Closure::bind(function () use ($loader) {
|
return \Closure::bind(function () use ($loader) {
|
||||||
$loader->prefixLengthsPsr4 = ComposerStaticInit45bdedca4f816bd4757927bb4025ea19::$prefixLengthsPsr4;
|
$loader->prefixLengthsPsr4 = ComposerStaticInit1b9205f82305e30ba10ce859891b7d1f::$prefixLengthsPsr4;
|
||||||
$loader->prefixDirsPsr4 = ComposerStaticInit45bdedca4f816bd4757927bb4025ea19::$prefixDirsPsr4;
|
$loader->prefixDirsPsr4 = ComposerStaticInit1b9205f82305e30ba10ce859891b7d1f::$prefixDirsPsr4;
|
||||||
$loader->classMap = ComposerStaticInit45bdedca4f816bd4757927bb4025ea19::$classMap;
|
$loader->classMap = ComposerStaticInit1b9205f82305e30ba10ce859891b7d1f::$classMap;
|
||||||
|
|
||||||
}, null, ClassLoader::class);
|
}, null, ClassLoader::class);
|
||||||
}
|
}
|
||||||
|
32
vendor/composer/installed.json
vendored
32
vendor/composer/installed.json
vendored
@ -2165,12 +2165,12 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https:\/\/github.com\/rectorphp\/rector-doctrine.git",
|
"url": "https:\/\/github.com\/rectorphp\/rector-doctrine.git",
|
||||||
"reference": "e8de3b0cbb4bfb1ddcb65102fbf1d852369d4246"
|
"reference": "2b82f7eba4ec9c9a3059076a2dc176310aa5a274"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-doctrine\/zipball\/e8de3b0cbb4bfb1ddcb65102fbf1d852369d4246",
|
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-doctrine\/zipball\/2b82f7eba4ec9c9a3059076a2dc176310aa5a274",
|
||||||
"reference": "e8de3b0cbb4bfb1ddcb65102fbf1d852369d4246",
|
"reference": "2b82f7eba4ec9c9a3059076a2dc176310aa5a274",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2195,7 +2195,7 @@
|
|||||||
"symplify\/rule-doc-generator": "^10.0",
|
"symplify\/rule-doc-generator": "^10.0",
|
||||||
"symplify\/vendor-patches": "^10.0"
|
"symplify\/vendor-patches": "^10.0"
|
||||||
},
|
},
|
||||||
"time": "2022-01-12T11:18:17+00:00",
|
"time": "2022-01-17T15:16:46+00:00",
|
||||||
"default-branch": true,
|
"default-branch": true,
|
||||||
"type": "rector-extension",
|
"type": "rector-extension",
|
||||||
"extra": {
|
"extra": {
|
||||||
@ -2377,12 +2377,12 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https:\/\/github.com\/rectorphp\/rector-nette.git",
|
"url": "https:\/\/github.com\/rectorphp\/rector-nette.git",
|
||||||
"reference": "eb859a55eee64bc5dcb60e0b0254f77b8f4790d2"
|
"reference": "fbfa93c0b88d5f2d7b3339e766653cfbd14206bf"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-nette\/zipball\/eb859a55eee64bc5dcb60e0b0254f77b8f4790d2",
|
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-nette\/zipball\/fbfa93c0b88d5f2d7b3339e766653cfbd14206bf",
|
||||||
"reference": "eb859a55eee64bc5dcb60e0b0254f77b8f4790d2",
|
"reference": "fbfa93c0b88d5f2d7b3339e766653cfbd14206bf",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2414,7 +2414,7 @@
|
|||||||
"symplify\/rule-doc-generator": "^10.0",
|
"symplify\/rule-doc-generator": "^10.0",
|
||||||
"symplify\/vendor-patches": "^10.0"
|
"symplify\/vendor-patches": "^10.0"
|
||||||
},
|
},
|
||||||
"time": "2021-12-31T08:08:04+00:00",
|
"time": "2022-01-17T15:43:45+00:00",
|
||||||
"default-branch": true,
|
"default-branch": true,
|
||||||
"type": "rector-extension",
|
"type": "rector-extension",
|
||||||
"extra": {
|
"extra": {
|
||||||
@ -2523,12 +2523,12 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https:\/\/github.com\/rectorphp\/rector-phpunit.git",
|
"url": "https:\/\/github.com\/rectorphp\/rector-phpunit.git",
|
||||||
"reference": "cd2eb3d70f324d0c71bea89d26349f47f5ba6bd2"
|
"reference": "5a8c2a899ba438e49efc15a399ca8bcf3284d33f"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-phpunit\/zipball\/cd2eb3d70f324d0c71bea89d26349f47f5ba6bd2",
|
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-phpunit\/zipball\/5a8c2a899ba438e49efc15a399ca8bcf3284d33f",
|
||||||
"reference": "cd2eb3d70f324d0c71bea89d26349f47f5ba6bd2",
|
"reference": "5a8c2a899ba438e49efc15a399ca8bcf3284d33f",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2552,7 +2552,7 @@
|
|||||||
"symplify\/rule-doc-generator": "^10.0",
|
"symplify\/rule-doc-generator": "^10.0",
|
||||||
"symplify\/vendor-patches": "^10.0"
|
"symplify\/vendor-patches": "^10.0"
|
||||||
},
|
},
|
||||||
"time": "2021-12-31T12:15:32+00:00",
|
"time": "2022-01-17T16:11:25+00:00",
|
||||||
"default-branch": true,
|
"default-branch": true,
|
||||||
"type": "rector-extension",
|
"type": "rector-extension",
|
||||||
"extra": {
|
"extra": {
|
||||||
@ -2590,12 +2590,12 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https:\/\/github.com\/rectorphp\/rector-symfony.git",
|
"url": "https:\/\/github.com\/rectorphp\/rector-symfony.git",
|
||||||
"reference": "d12f643aae1eb0e8bb531376ce239c300e647889"
|
"reference": "57743a8956c8cef8fb511b2d35aabbb49cba3161"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/d12f643aae1eb0e8bb531376ce239c300e647889",
|
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/57743a8956c8cef8fb511b2d35aabbb49cba3161",
|
||||||
"reference": "d12f643aae1eb0e8bb531376ce239c300e647889",
|
"reference": "57743a8956c8cef8fb511b2d35aabbb49cba3161",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2623,7 +2623,7 @@
|
|||||||
"symplify\/rule-doc-generator": "^10.0",
|
"symplify\/rule-doc-generator": "^10.0",
|
||||||
"symplify\/vendor-patches": "^10.0"
|
"symplify\/vendor-patches": "^10.0"
|
||||||
},
|
},
|
||||||
"time": "2022-01-17T10:08:59+00:00",
|
"time": "2022-01-17T15:17:37+00:00",
|
||||||
"default-branch": true,
|
"default-branch": true,
|
||||||
"type": "rector-extension",
|
"type": "rector-extension",
|
||||||
"extra": {
|
"extra": {
|
||||||
|
2
vendor/composer/installed.php
vendored
2
vendor/composer/installed.php
vendored
File diff suppressed because one or more lines are too long
@ -9,7 +9,7 @@ namespace Rector\RectorInstaller;
|
|||||||
*/
|
*/
|
||||||
final class GeneratedConfig
|
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' => 'dev-main f601f07'), '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 e8de3b0'), 'rector/rector-generator' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-generator', 'relative_install_path' => '../../rector-generator', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main df58e86'), '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 96d50d4'), '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' => 'dev-main eb859a5'), '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 3f56f3b'), '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 cd2eb3d'), '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 d12f643'), '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' => 'dev-main d4a362b'));
|
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' => 'dev-main f601f07'), '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 2b82f7e'), 'rector/rector-generator' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-generator', 'relative_install_path' => '../../rector-generator', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main df58e86'), '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 96d50d4'), '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' => 'dev-main fbfa93c'), '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 3f56f3b'), '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 5a8c2a8'), '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 57743a8'), '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' => 'dev-main d4a362b'));
|
||||||
private function __construct()
|
private function __construct()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
2
vendor/rector/rector-doctrine/rector.php
vendored
2
vendor/rector/rector-doctrine/rector.php
vendored
@ -19,7 +19,7 @@ return static function (\Symfony\Component\DependencyInjection\Loader\Configurat
|
|||||||
'*/Source/*',
|
'*/Source/*',
|
||||||
'*/Fixture/*',
|
'*/Fixture/*',
|
||||||
]);
|
]);
|
||||||
$containerConfigurator->import(\Rector\Set\ValueObject\LevelSetList::UP_TO_PHP_80);
|
$containerConfigurator->import(\Rector\Set\ValueObject\LevelSetList::UP_TO_PHP_81);
|
||||||
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::DEAD_CODE);
|
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::DEAD_CODE);
|
||||||
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::CODE_QUALITY);
|
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::CODE_QUALITY);
|
||||||
$services = $containerConfigurator->services();
|
$services = $containerConfigurator->services();
|
||||||
|
@ -12,10 +12,12 @@ use Rector\NodeNameResolver\NodeNameResolver;
|
|||||||
final class AssignPropertyFetchAnalyzer
|
final class AssignPropertyFetchAnalyzer
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare (strict_types=1);
|
|
||||||
namespace Rector\Doctrine\NodeAnalyzer;
|
|
||||||
|
|
||||||
use PhpParser\Node\Attribute;
|
|
||||||
use PhpParser\Node\Expr;
|
|
||||||
use Rector\NodeNameResolver\NodeNameResolver;
|
|
||||||
final class AttributeArgValueResolver
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @readonly
|
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
|
||||||
*/
|
|
||||||
private $nodeNameResolver;
|
|
||||||
public function __construct(\Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
|
|
||||||
{
|
|
||||||
$this->nodeNameResolver = $nodeNameResolver;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* @return \PhpParser\Node\Expr|null
|
|
||||||
*/
|
|
||||||
public function resolve(\PhpParser\Node\Attribute $attribute, string $argName)
|
|
||||||
{
|
|
||||||
foreach ($attribute->args as $arg) {
|
|
||||||
if ($arg->name === null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!$this->nodeNameResolver->isName($arg->name, $argName)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
return $arg->value;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
50
vendor/rector/rector-doctrine/src/NodeAnalyzer/AttributeCleaner.php
vendored
Normal file
50
vendor/rector/rector-doctrine/src/NodeAnalyzer/AttributeCleaner.php
vendored
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare (strict_types=1);
|
||||||
|
namespace Rector\Doctrine\NodeAnalyzer;
|
||||||
|
|
||||||
|
use PhpParser\Node;
|
||||||
|
use PhpParser\Node\Attribute;
|
||||||
|
use PhpParser\Node\Param;
|
||||||
|
use PhpParser\Node\Stmt\ClassLike;
|
||||||
|
use PhpParser\Node\Stmt\ClassMethod;
|
||||||
|
use PhpParser\Node\Stmt\Property;
|
||||||
|
use Rector\NodeNameResolver\NodeNameResolver;
|
||||||
|
final class AttributeCleaner
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var \Rector\Doctrine\NodeAnalyzer\AttributeFinder
|
||||||
|
*/
|
||||||
|
private $attributeFinder;
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
|
*/
|
||||||
|
private $nodeNameResolver;
|
||||||
|
public function __construct(\Rector\Doctrine\NodeAnalyzer\AttributeFinder $attributeFinder, \Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
|
||||||
|
{
|
||||||
|
$this->attributeFinder = $attributeFinder;
|
||||||
|
$this->nodeNameResolver = $nodeNameResolver;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param \PhpParser\Node\Param|\PhpParser\Node\Stmt\ClassLike|\PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Property $node
|
||||||
|
*/
|
||||||
|
public function clearAttributeAndArgName($node, string $attributeClass, string $argName) : void
|
||||||
|
{
|
||||||
|
$attribute = $this->attributeFinder->findAttributeByClass($node, $attributeClass);
|
||||||
|
if (!$attribute instanceof \PhpParser\Node\Attribute) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
foreach ($attribute->args as $key => $arg) {
|
||||||
|
if (!$arg->name instanceof \PhpParser\Node) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!$this->nodeNameResolver->isName($arg->name, $argName)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// remove attribute
|
||||||
|
unset($attribute->args[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -5,6 +5,7 @@ namespace Rector\Doctrine\NodeAnalyzer;
|
|||||||
|
|
||||||
use PhpParser\Node\Attribute;
|
use PhpParser\Node\Attribute;
|
||||||
use PhpParser\Node\AttributeGroup;
|
use PhpParser\Node\AttributeGroup;
|
||||||
|
use PhpParser\Node\Expr;
|
||||||
use PhpParser\Node\Name\FullyQualified;
|
use PhpParser\Node\Name\FullyQualified;
|
||||||
use PhpParser\Node\Param;
|
use PhpParser\Node\Param;
|
||||||
use PhpParser\Node\Stmt\ClassLike;
|
use PhpParser\Node\Stmt\ClassLike;
|
||||||
@ -14,6 +15,7 @@ use Rector\NodeNameResolver\NodeNameResolver;
|
|||||||
final class AttributeFinder
|
final class AttributeFinder
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
@ -22,9 +24,46 @@ final class AttributeFinder
|
|||||||
$this->nodeNameResolver = $nodeNameResolver;
|
$this->nodeNameResolver = $nodeNameResolver;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
* @param class-string $attributeClass
|
||||||
* @param \PhpParser\Node\Param|\PhpParser\Node\Stmt\ClassLike|\PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Property $node
|
* @param \PhpParser\Node\Param|\PhpParser\Node\Stmt\ClassLike|\PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Property $node
|
||||||
*/
|
*/
|
||||||
public function findAttributeByClass($node, string $desiredAttributeClass) : ?\PhpParser\Node\Attribute
|
public function findAttributeByClassArgByName($node, string $attributeClass, string $argName) : ?\PhpParser\Node\Expr
|
||||||
|
{
|
||||||
|
return $this->findAttributeByClassesArgByName($node, [$attributeClass], $argName);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param class-string[] $attributeClasses
|
||||||
|
* @param \PhpParser\Node\Param|\PhpParser\Node\Stmt\ClassLike|\PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Property $node
|
||||||
|
*/
|
||||||
|
public function findAttributeByClassesArgByName($node, array $attributeClasses, string $argName) : ?\PhpParser\Node\Expr
|
||||||
|
{
|
||||||
|
$attribute = $this->findAttributeByClasses($node, $attributeClasses);
|
||||||
|
if (!$attribute instanceof \PhpParser\Node\Attribute) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return $this->findArgByName($attribute, $argName);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @return \PhpParser\Node\Expr|null
|
||||||
|
*/
|
||||||
|
public function findArgByName(\PhpParser\Node\Attribute $attribute, string $argName)
|
||||||
|
{
|
||||||
|
foreach ($attribute->args as $arg) {
|
||||||
|
if ($arg->name === null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!$this->nodeNameResolver->isName($arg->name, $argName)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
return $arg->value;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param class-string $attributeClass
|
||||||
|
* @param \PhpParser\Node\Param|\PhpParser\Node\Stmt\ClassLike|\PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Property $node
|
||||||
|
*/
|
||||||
|
public function findAttributeByClass($node, string $attributeClass) : ?\PhpParser\Node\Attribute
|
||||||
{
|
{
|
||||||
/** @var AttributeGroup $attrGroup */
|
/** @var AttributeGroup $attrGroup */
|
||||||
foreach ($node->attrGroups as $attrGroup) {
|
foreach ($node->attrGroups as $attrGroup) {
|
||||||
@ -32,11 +71,25 @@ final class AttributeFinder
|
|||||||
if (!$attribute->name instanceof \PhpParser\Node\Name\FullyQualified) {
|
if (!$attribute->name instanceof \PhpParser\Node\Name\FullyQualified) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ($this->nodeNameResolver->isName($attribute->name, $desiredAttributeClass)) {
|
if ($this->nodeNameResolver->isName($attribute->name, $attributeClass)) {
|
||||||
return $attribute;
|
return $attribute;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @param class-string[] $attributeClasses
|
||||||
|
* @param \PhpParser\Node\Param|\PhpParser\Node\Stmt\ClassLike|\PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Stmt\Property $node
|
||||||
|
*/
|
||||||
|
private function findAttributeByClasses($node, array $attributeClasses) : ?\PhpParser\Node\Attribute
|
||||||
|
{
|
||||||
|
foreach ($attributeClasses as $attributeClass) {
|
||||||
|
$attribute = $this->findAttributeByClass($node, $attributeClass);
|
||||||
|
if ($attribute instanceof \PhpParser\Node\Attribute) {
|
||||||
|
return $attribute;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,10 +14,12 @@ use Rector\NodeNameResolver\NodeNameResolver;
|
|||||||
final class ConstructorAssignPropertyAnalyzer
|
final class ConstructorAssignPropertyAnalyzer
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
|
@ -20,14 +20,17 @@ use Rector\NodeNameResolver\NodeNameResolver;
|
|||||||
final class EntityObjectTypeResolver
|
final class EntityObjectTypeResolver
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
||||||
*/
|
*/
|
||||||
private $phpDocInfoFactory;
|
private $phpDocInfoFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\TypeAnalyzer\TypeFinder
|
* @var \Rector\Doctrine\TypeAnalyzer\TypeFinder
|
||||||
*/
|
*/
|
||||||
private $typeFinder;
|
private $typeFinder;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
|
@ -12,14 +12,17 @@ use RectorPrefix20220117\Symplify\Astral\NodeTraverser\SimpleCallableNodeTravers
|
|||||||
final class MethodCallNameOnTypeResolver
|
final class MethodCallNameOnTypeResolver
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
|
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
|
||||||
*/
|
*/
|
||||||
private $simpleCallableNodeTraverser;
|
private $simpleCallableNodeTraverser;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
|
@ -21,18 +21,22 @@ use Rector\NodeTypeResolver\NodeTypeResolver;
|
|||||||
final class SetterClassMethodAnalyzer
|
final class SetterClassMethodAnalyzer
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\Reflection\ReflectionResolver
|
* @var \Rector\Core\Reflection\ReflectionResolver
|
||||||
*/
|
*/
|
||||||
private $reflectionResolver;
|
private $reflectionResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
|
36
vendor/rector/rector-doctrine/src/NodeAnalyzer/TargetEntityResolver.php
vendored
Normal file
36
vendor/rector/rector-doctrine/src/NodeAnalyzer/TargetEntityResolver.php
vendored
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare (strict_types=1);
|
||||||
|
namespace Rector\Doctrine\NodeAnalyzer;
|
||||||
|
|
||||||
|
use PhpParser\Node\Expr;
|
||||||
|
use PhpParser\Node\Expr\ClassConstFetch;
|
||||||
|
use PhpParser\Node\Scalar\String_;
|
||||||
|
use Rector\Core\Exception\NotImplementedYetException;
|
||||||
|
use Rector\NodeNameResolver\NodeNameResolver;
|
||||||
|
final class TargetEntityResolver
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
|
*/
|
||||||
|
private $nodeNameResolver;
|
||||||
|
public function __construct(\Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver)
|
||||||
|
{
|
||||||
|
$this->nodeNameResolver = $nodeNameResolver;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function resolveFromExpr(\PhpParser\Node\Expr $targetEntityExpr)
|
||||||
|
{
|
||||||
|
if ($targetEntityExpr instanceof \PhpParser\Node\Expr\ClassConstFetch) {
|
||||||
|
return $this->nodeNameResolver->getName($targetEntityExpr->class);
|
||||||
|
}
|
||||||
|
if ($targetEntityExpr instanceof \PhpParser\Node\Scalar\String_) {
|
||||||
|
return $targetEntityExpr->value;
|
||||||
|
}
|
||||||
|
$errorMessage = \sprintf('Add support for "%s" targetEntity in "%s"', \get_class($targetEntityExpr), self::class);
|
||||||
|
throw new \Rector\Core\Exception\NotImplementedYetException($errorMessage);
|
||||||
|
}
|
||||||
|
}
|
@ -14,18 +14,22 @@ use Rector\NodeRemoval\NodeRemover;
|
|||||||
final class TranslatablePropertyCollectorAndRemover
|
final class TranslatablePropertyCollectorAndRemover
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover
|
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover
|
||||||
*/
|
*/
|
||||||
private $phpDocTagRemover;
|
private $phpDocTagRemover;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
||||||
*/
|
*/
|
||||||
private $phpDocInfoFactory;
|
private $phpDocInfoFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeRemoval\NodeRemover
|
* @var \Rector\NodeRemoval\NodeRemover
|
||||||
*/
|
*/
|
||||||
private $nodeRemover;
|
private $nodeRemover;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
|
@ -20,14 +20,17 @@ use RectorPrefix20220117\Symplify\Astral\ValueObject\NodeBuilder\MethodBuilder;
|
|||||||
final class ConstructClassMethodFactory
|
final class ConstructClassMethodFactory
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\StaticTypeMapper\StaticTypeMapper
|
* @var \Rector\StaticTypeMapper\StaticTypeMapper
|
||||||
*/
|
*/
|
||||||
private $staticTypeMapper;
|
private $staticTypeMapper;
|
||||||
|
@ -13,10 +13,12 @@ use Rector\Core\PhpParser\Node\NodeFactory;
|
|||||||
final class EntityIdNodeFactory
|
final class EntityIdNodeFactory
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\NodeFactory
|
* @var \Rector\Core\PhpParser\Node\NodeFactory
|
||||||
*/
|
*/
|
||||||
private $nodeFactory;
|
private $nodeFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
||||||
*/
|
*/
|
||||||
private $phpDocInfoFactory;
|
private $phpDocInfoFactory;
|
||||||
|
@ -18,18 +18,22 @@ use Rector\StaticTypeMapper\StaticTypeMapper;
|
|||||||
final class ParamFactory
|
final class ParamFactory
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\StaticTypeMapper\StaticTypeMapper
|
* @var \Rector\StaticTypeMapper\StaticTypeMapper
|
||||||
*/
|
*/
|
||||||
private $staticTypeMapper;
|
private $staticTypeMapper;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\NodeFactory
|
* @var \Rector\Core\PhpParser\Node\NodeFactory
|
||||||
*/
|
*/
|
||||||
private $nodeFactory;
|
private $nodeFactory;
|
||||||
|
@ -13,14 +13,17 @@ use Rector\NodeNameResolver\NodeNameResolver;
|
|||||||
final class RepositoryAssignFactory
|
final class RepositoryAssignFactory
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeAnalyzer\EntityObjectTypeResolver
|
* @var \Rector\Doctrine\NodeAnalyzer\EntityObjectTypeResolver
|
||||||
*/
|
*/
|
||||||
private $entityObjectTypeResolver;
|
private $entityObjectTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\NodeFactory
|
* @var \Rector\Core\PhpParser\Node\NodeFactory
|
||||||
*/
|
*/
|
||||||
private $nodeFactory;
|
private $nodeFactory;
|
||||||
|
@ -15,10 +15,12 @@ use Rector\Core\NodeManipulator\ClassInsertManipulator;
|
|||||||
final class TranslationClassNodeFactory
|
final class TranslationClassNodeFactory
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
||||||
*/
|
*/
|
||||||
private $phpDocInfoFactory;
|
private $phpDocInfoFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
||||||
*/
|
*/
|
||||||
private $classInsertManipulator;
|
private $classInsertManipulator;
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
declare (strict_types=1);
|
declare (strict_types=1);
|
||||||
namespace Rector\Doctrine\NodeManipulator;
|
namespace Rector\Doctrine\NodeManipulator;
|
||||||
|
|
||||||
use PhpParser\Node\Attribute;
|
|
||||||
use PhpParser\Node\Scalar\String_;
|
use PhpParser\Node\Scalar\String_;
|
||||||
use PhpParser\Node\Stmt\Property;
|
use PhpParser\Node\Stmt\Property;
|
||||||
use PHPStan\Type\BooleanType;
|
use PHPStan\Type\BooleanType;
|
||||||
@ -17,7 +16,6 @@ use PHPStan\Type\Type;
|
|||||||
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
|
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
|
||||||
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
|
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
|
||||||
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
|
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
|
||||||
use Rector\Doctrine\NodeAnalyzer\AttributeArgValueResolver;
|
|
||||||
use Rector\Doctrine\NodeAnalyzer\AttributeFinder;
|
use Rector\Doctrine\NodeAnalyzer\AttributeFinder;
|
||||||
use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
|
use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
|
||||||
final class ColumnPropertyTypeResolver
|
final class ColumnPropertyTypeResolver
|
||||||
@ -36,26 +34,25 @@ final class ColumnPropertyTypeResolver
|
|||||||
*/
|
*/
|
||||||
private $phpDocInfoFactory;
|
private $phpDocInfoFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory
|
* @var \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory
|
||||||
*/
|
*/
|
||||||
private $typeFactory;
|
private $typeFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeAnalyzer\AttributeFinder
|
* @var \Rector\Doctrine\NodeAnalyzer\AttributeFinder
|
||||||
*/
|
*/
|
||||||
private $attributeFinder;
|
private $attributeFinder;
|
||||||
/**
|
|
||||||
* @var \Rector\Doctrine\NodeAnalyzer\AttributeArgValueResolver
|
|
||||||
*/
|
|
||||||
private $attributeArgValueResolver;
|
|
||||||
/**
|
/**
|
||||||
* @var array<string, Type>
|
* @var array<string, Type>
|
||||||
|
* @readonly
|
||||||
*/
|
*/
|
||||||
private $doctrineTypeToScalarType;
|
private $doctrineTypeToScalarType;
|
||||||
/**
|
/**
|
||||||
* @param array<string, Type> $doctrineTypeToScalarType
|
* @param array<string, Type> $doctrineTypeToScalarType
|
||||||
* @see https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/basic-mapping.html#doctrine-mapping-types
|
* @see https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/basic-mapping.html#doctrine-mapping-types
|
||||||
*/
|
*/
|
||||||
public function __construct(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory $phpDocInfoFactory, \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory $typeFactory, \Rector\Doctrine\NodeAnalyzer\AttributeFinder $attributeFinder, \Rector\Doctrine\NodeAnalyzer\AttributeArgValueResolver $attributeArgValueResolver, array $doctrineTypeToScalarType = null)
|
public function __construct(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory $phpDocInfoFactory, \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory $typeFactory, \Rector\Doctrine\NodeAnalyzer\AttributeFinder $attributeFinder, array $doctrineTypeToScalarType = null)
|
||||||
{
|
{
|
||||||
$doctrineTypeToScalarType = $doctrineTypeToScalarType ?? [
|
$doctrineTypeToScalarType = $doctrineTypeToScalarType ?? [
|
||||||
'tinyint' => new \PHPStan\Type\BooleanType(),
|
'tinyint' => new \PHPStan\Type\BooleanType(),
|
||||||
@ -96,17 +93,13 @@ final class ColumnPropertyTypeResolver
|
|||||||
$this->phpDocInfoFactory = $phpDocInfoFactory;
|
$this->phpDocInfoFactory = $phpDocInfoFactory;
|
||||||
$this->typeFactory = $typeFactory;
|
$this->typeFactory = $typeFactory;
|
||||||
$this->attributeFinder = $attributeFinder;
|
$this->attributeFinder = $attributeFinder;
|
||||||
$this->attributeArgValueResolver = $attributeArgValueResolver;
|
|
||||||
$this->doctrineTypeToScalarType = $doctrineTypeToScalarType;
|
$this->doctrineTypeToScalarType = $doctrineTypeToScalarType;
|
||||||
}
|
}
|
||||||
public function resolve(\PhpParser\Node\Stmt\Property $property, bool $isNullable) : ?\PHPStan\Type\Type
|
public function resolve(\PhpParser\Node\Stmt\Property $property, bool $isNullable) : ?\PHPStan\Type\Type
|
||||||
{
|
{
|
||||||
$columnAttribute = $this->attributeFinder->findAttributeByClass($property, self::COLUMN_CLASS);
|
$argValue = $this->attributeFinder->findAttributeByClassArgByName($property, self::COLUMN_CLASS, 'type');
|
||||||
if ($columnAttribute instanceof \PhpParser\Node\Attribute) {
|
if ($argValue instanceof \PhpParser\Node\Scalar\String_) {
|
||||||
$argValue = $this->attributeArgValueResolver->resolve($columnAttribute, 'type');
|
return $this->createPHPStanTypeFromDoctrineStringType($argValue->value, $isNullable);
|
||||||
if ($argValue instanceof \PhpParser\Node\Scalar\String_) {
|
|
||||||
return $this->createPHPStanTypeFromDoctrineStringType($argValue->value, $isNullable);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
|
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
|
||||||
return $this->resolveFromPhpDocInfo($phpDocInfo, $isNullable);
|
return $this->resolveFromPhpDocInfo($phpDocInfo, $isNullable);
|
||||||
|
@ -13,10 +13,12 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
|
|||||||
final class ConstructorManipulator
|
final class ConstructorManipulator
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\NodeFactory
|
* @var \Rector\Core\PhpParser\Node\NodeFactory
|
||||||
*/
|
*/
|
||||||
private $nodeFactory;
|
private $nodeFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
||||||
*/
|
*/
|
||||||
private $classInsertManipulator;
|
private $classInsertManipulator;
|
||||||
|
@ -17,14 +17,17 @@ use RectorPrefix20220117\Symplify\Astral\NodeTraverser\SimpleCallableNodeTravers
|
|||||||
final class DependencyRemover
|
final class DependencyRemover
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
|
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
|
||||||
*/
|
*/
|
||||||
private $simpleCallableNodeTraverser;
|
private $simpleCallableNodeTraverser;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeRemoval\NodeRemover
|
* @var \Rector\NodeRemoval\NodeRemover
|
||||||
*/
|
*/
|
||||||
private $nodeRemover;
|
private $nodeRemover;
|
||||||
|
@ -20,18 +20,22 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
|
|||||||
final class IssetDimFetchCleaner
|
final class IssetDimFetchCleaner
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
||||||
*/
|
*/
|
||||||
private $valueResolver;
|
private $valueResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Comparing\NodeComparator
|
* @var \Rector\Core\PhpParser\Comparing\NodeComparator
|
||||||
*/
|
*/
|
||||||
private $nodeComparator;
|
private $nodeComparator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeRemoval\NodeRemover
|
* @var \Rector\NodeRemoval\NodeRemover
|
||||||
*/
|
*/
|
||||||
private $nodeRemover;
|
private $nodeRemover;
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
declare (strict_types=1);
|
declare (strict_types=1);
|
||||||
namespace Rector\Doctrine\NodeManipulator;
|
namespace Rector\Doctrine\NodeManipulator;
|
||||||
|
|
||||||
use PhpParser\Node\Attribute;
|
|
||||||
use PhpParser\Node\Expr;
|
use PhpParser\Node\Expr;
|
||||||
use PhpParser\Node\Stmt\Property;
|
use PhpParser\Node\Stmt\Property;
|
||||||
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprTrueNode;
|
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprTrueNode;
|
||||||
@ -11,7 +10,6 @@ use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
|
|||||||
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
|
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
|
||||||
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
|
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
|
||||||
use Rector\Core\PhpParser\Node\Value\ValueResolver;
|
use Rector\Core\PhpParser\Node\Value\ValueResolver;
|
||||||
use Rector\Doctrine\NodeAnalyzer\AttributeArgValueResolver;
|
|
||||||
use Rector\Doctrine\NodeAnalyzer\AttributeFinder;
|
use Rector\Doctrine\NodeAnalyzer\AttributeFinder;
|
||||||
final class NullabilityColumnPropertyTypeResolver
|
final class NullabilityColumnPropertyTypeResolver
|
||||||
{
|
{
|
||||||
@ -25,35 +23,28 @@ final class NullabilityColumnPropertyTypeResolver
|
|||||||
*/
|
*/
|
||||||
private $phpDocInfoFactory;
|
private $phpDocInfoFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeAnalyzer\AttributeFinder
|
* @var \Rector\Doctrine\NodeAnalyzer\AttributeFinder
|
||||||
*/
|
*/
|
||||||
private $attributeFinder;
|
private $attributeFinder;
|
||||||
/**
|
/**
|
||||||
* @var \Rector\Doctrine\NodeAnalyzer\AttributeArgValueResolver
|
* @readonly
|
||||||
*/
|
|
||||||
private $attributeArgValueResolver;
|
|
||||||
/**
|
|
||||||
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
||||||
*/
|
*/
|
||||||
private $valueResolver;
|
private $valueResolver;
|
||||||
/**
|
/**
|
||||||
* @see https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/basic-mapping.html#doctrine-mapping-types
|
* @see https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/basic-mapping.html#doctrine-mapping-types
|
||||||
*/
|
*/
|
||||||
public function __construct(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory $phpDocInfoFactory, \Rector\Doctrine\NodeAnalyzer\AttributeFinder $attributeFinder, \Rector\Doctrine\NodeAnalyzer\AttributeArgValueResolver $attributeArgValueResolver, \Rector\Core\PhpParser\Node\Value\ValueResolver $valueResolver)
|
public function __construct(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory $phpDocInfoFactory, \Rector\Doctrine\NodeAnalyzer\AttributeFinder $attributeFinder, \Rector\Core\PhpParser\Node\Value\ValueResolver $valueResolver)
|
||||||
{
|
{
|
||||||
$this->phpDocInfoFactory = $phpDocInfoFactory;
|
$this->phpDocInfoFactory = $phpDocInfoFactory;
|
||||||
$this->attributeFinder = $attributeFinder;
|
$this->attributeFinder = $attributeFinder;
|
||||||
$this->attributeArgValueResolver = $attributeArgValueResolver;
|
|
||||||
$this->valueResolver = $valueResolver;
|
$this->valueResolver = $valueResolver;
|
||||||
}
|
}
|
||||||
public function isNullable(\PhpParser\Node\Stmt\Property $property) : bool
|
public function isNullable(\PhpParser\Node\Stmt\Property $property) : bool
|
||||||
{
|
{
|
||||||
$columnAttribute = $this->attributeFinder->findAttributeByClass($property, self::COLUMN_CLASS);
|
$nullableExpr = $this->attributeFinder->findAttributeByClassArgByName($property, self::COLUMN_CLASS, 'nullable');
|
||||||
if ($columnAttribute instanceof \PhpParser\Node\Attribute) {
|
if ($nullableExpr instanceof \PhpParser\Node\Expr) {
|
||||||
$nullableExpr = $this->attributeArgValueResolver->resolve($columnAttribute, 'nullable');
|
|
||||||
if (!$nullableExpr instanceof \PhpParser\Node\Expr) {
|
|
||||||
return \true;
|
|
||||||
}
|
|
||||||
return $this->valueResolver->isTrue($nullableExpr);
|
return $this->valueResolver->isTrue($nullableExpr);
|
||||||
}
|
}
|
||||||
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
|
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
|
||||||
|
@ -13,10 +13,12 @@ use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
|
|||||||
final class PropertyTypeManipulator
|
final class PropertyTypeManipulator
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockClassRenamer
|
* @var \Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockClassRenamer
|
||||||
*/
|
*/
|
||||||
private $docBlockClassRenamer;
|
private $docBlockClassRenamer;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
||||||
*/
|
*/
|
||||||
private $phpDocInfoFactory;
|
private $phpDocInfoFactory;
|
||||||
|
@ -3,11 +3,15 @@
|
|||||||
declare (strict_types=1);
|
declare (strict_types=1);
|
||||||
namespace Rector\Doctrine\NodeManipulator;
|
namespace Rector\Doctrine\NodeManipulator;
|
||||||
|
|
||||||
|
use PhpParser\Node\Expr;
|
||||||
use PhpParser\Node\Stmt\Property;
|
use PhpParser\Node\Stmt\Property;
|
||||||
use PHPStan\Type\Generic\GenericObjectType;
|
use PHPStan\Type\Generic\GenericObjectType;
|
||||||
use PHPStan\Type\Type;
|
use PHPStan\Type\Type;
|
||||||
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
|
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
|
||||||
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
|
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
|
||||||
|
use Rector\Core\Exception\ShouldNotHappenException;
|
||||||
|
use Rector\Core\PhpParser\Node\Value\ValueResolver;
|
||||||
|
use Rector\Doctrine\NodeAnalyzer\AttributeFinder;
|
||||||
use Rector\Doctrine\PhpDoc\ShortClassExpander;
|
use Rector\Doctrine\PhpDoc\ShortClassExpander;
|
||||||
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
|
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
|
||||||
final class ToManyRelationPropertyTypeResolver
|
final class ToManyRelationPropertyTypeResolver
|
||||||
@ -16,6 +20,10 @@ final class ToManyRelationPropertyTypeResolver
|
|||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
private const COLLECTION_TYPE = 'Doctrine\\Common\\Collections\\Collection';
|
private const COLLECTION_TYPE = 'Doctrine\\Common\\Collections\\Collection';
|
||||||
|
/**
|
||||||
|
* @var class-string[]
|
||||||
|
*/
|
||||||
|
private const TO_MANY_ANNOTATION_CLASSES = ['Doctrine\\ORM\\Mapping\\OneToMany', 'Doctrine\\ORM\\Mapping\\ManyToMany'];
|
||||||
/**
|
/**
|
||||||
* @readonly
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
||||||
@ -26,23 +34,49 @@ final class ToManyRelationPropertyTypeResolver
|
|||||||
* @var \Rector\Doctrine\PhpDoc\ShortClassExpander
|
* @var \Rector\Doctrine\PhpDoc\ShortClassExpander
|
||||||
*/
|
*/
|
||||||
private $shortClassExpander;
|
private $shortClassExpander;
|
||||||
public function __construct(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory $phpDocInfoFactory, \Rector\Doctrine\PhpDoc\ShortClassExpander $shortClassExpander)
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var \Rector\Doctrine\NodeAnalyzer\AttributeFinder
|
||||||
|
*/
|
||||||
|
private $attributeFinder;
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
||||||
|
*/
|
||||||
|
private $valueResolver;
|
||||||
|
public function __construct(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory $phpDocInfoFactory, \Rector\Doctrine\PhpDoc\ShortClassExpander $shortClassExpander, \Rector\Doctrine\NodeAnalyzer\AttributeFinder $attributeFinder, \Rector\Core\PhpParser\Node\Value\ValueResolver $valueResolver)
|
||||||
{
|
{
|
||||||
$this->phpDocInfoFactory = $phpDocInfoFactory;
|
$this->phpDocInfoFactory = $phpDocInfoFactory;
|
||||||
$this->shortClassExpander = $shortClassExpander;
|
$this->shortClassExpander = $shortClassExpander;
|
||||||
|
$this->attributeFinder = $attributeFinder;
|
||||||
|
$this->valueResolver = $valueResolver;
|
||||||
}
|
}
|
||||||
public function resolve(\PhpParser\Node\Stmt\Property $property) : ?\PHPStan\Type\Type
|
public function resolve(\PhpParser\Node\Stmt\Property $property) : ?\PHPStan\Type\Type
|
||||||
{
|
{
|
||||||
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
|
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
|
||||||
$toManyRelationTagValueNode = $phpDocInfo->getByAnnotationClasses(['Doctrine\\ORM\\Mapping\\OneToMany', 'Doctrine\\ORM\\Mapping\\ManyToMany']);
|
$toManyRelationTagValueNode = $phpDocInfo->getByAnnotationClasses(self::TO_MANY_ANNOTATION_CLASSES);
|
||||||
if ($toManyRelationTagValueNode !== null) {
|
if ($toManyRelationTagValueNode !== null) {
|
||||||
return $this->processToManyRelation($property, $toManyRelationTagValueNode);
|
return $this->processToManyRelation($property, $toManyRelationTagValueNode);
|
||||||
}
|
}
|
||||||
return null;
|
$targetEntity = $this->attributeFinder->findAttributeByClassesArgByName($property, self::TO_MANY_ANNOTATION_CLASSES, 'targetEntity');
|
||||||
|
return $this->resolveTypeFromTargetEntity($targetEntity, $property);
|
||||||
}
|
}
|
||||||
private function processToManyRelation(\PhpParser\Node\Stmt\Property $property, \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode $doctrineAnnotationTagValueNode) : \PHPStan\Type\Type
|
private function processToManyRelation(\PhpParser\Node\Stmt\Property $property, \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode $doctrineAnnotationTagValueNode) : \PHPStan\Type\Type
|
||||||
{
|
{
|
||||||
$targetEntity = $doctrineAnnotationTagValueNode->getValueWithoutQuotes('targetEntity');
|
$targetEntity = $doctrineAnnotationTagValueNode->getValueWithoutQuotes('targetEntity');
|
||||||
|
if (!\is_string($targetEntity) && $targetEntity !== null) {
|
||||||
|
throw new \Rector\Core\Exception\ShouldNotHappenException();
|
||||||
|
}
|
||||||
|
return $this->resolveTypeFromTargetEntity($targetEntity, $property);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param \PhpParser\Node\Expr|string|null $targetEntity
|
||||||
|
*/
|
||||||
|
private function resolveTypeFromTargetEntity($targetEntity, \PhpParser\Node\Stmt\Property $property) : \PHPStan\Type\Type
|
||||||
|
{
|
||||||
|
if ($targetEntity instanceof \PhpParser\Node\Expr) {
|
||||||
|
$targetEntity = $this->valueResolver->getValue($targetEntity);
|
||||||
|
}
|
||||||
if (!\is_string($targetEntity)) {
|
if (!\is_string($targetEntity)) {
|
||||||
return new \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType(self::COLLECTION_TYPE);
|
return new \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType(self::COLLECTION_TYPE);
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ declare (strict_types=1);
|
|||||||
namespace Rector\Doctrine\NodeManipulator;
|
namespace Rector\Doctrine\NodeManipulator;
|
||||||
|
|
||||||
use RectorPrefix20220117\Nette\Utils\Strings;
|
use RectorPrefix20220117\Nette\Utils\Strings;
|
||||||
|
use PhpParser\Node\Expr;
|
||||||
use PhpParser\Node\Stmt\Property;
|
use PhpParser\Node\Stmt\Property;
|
||||||
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprTrueNode;
|
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprTrueNode;
|
||||||
use PHPStan\Type\MixedType;
|
use PHPStan\Type\MixedType;
|
||||||
@ -11,12 +12,19 @@ use PHPStan\Type\NullType;
|
|||||||
use PHPStan\Type\Type;
|
use PHPStan\Type\Type;
|
||||||
use PHPStan\Type\TypeCombinator;
|
use PHPStan\Type\TypeCombinator;
|
||||||
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
|
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
|
||||||
|
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
|
||||||
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
|
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
|
||||||
use Rector\BetterPhpDocParser\PhpDocParser\ClassAnnotationMatcher;
|
use Rector\BetterPhpDocParser\PhpDocParser\ClassAnnotationMatcher;
|
||||||
|
use Rector\Doctrine\NodeAnalyzer\AttributeFinder;
|
||||||
|
use Rector\Doctrine\NodeAnalyzer\TargetEntityResolver;
|
||||||
use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
|
use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
|
||||||
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
|
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
|
||||||
final class ToOneRelationPropertyTypeResolver
|
final class ToOneRelationPropertyTypeResolver
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var class-string[]
|
||||||
|
*/
|
||||||
|
private const TO_ONE_ANNOTATION_CLASSES = ['Doctrine\\ORM\\Mapping\\ManyToOne', 'Doctrine\\ORM\\Mapping\\OneToOne'];
|
||||||
/**
|
/**
|
||||||
* @readonly
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory
|
* @var \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory
|
||||||
@ -32,19 +40,40 @@ final class ToOneRelationPropertyTypeResolver
|
|||||||
* @var \Rector\BetterPhpDocParser\PhpDocParser\ClassAnnotationMatcher
|
* @var \Rector\BetterPhpDocParser\PhpDocParser\ClassAnnotationMatcher
|
||||||
*/
|
*/
|
||||||
private $classAnnotationMatcher;
|
private $classAnnotationMatcher;
|
||||||
public function __construct(\Rector\NodeTypeResolver\PHPStan\Type\TypeFactory $typeFactory, \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory $phpDocInfoFactory, \Rector\BetterPhpDocParser\PhpDocParser\ClassAnnotationMatcher $classAnnotationMatcher)
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var \Rector\Doctrine\NodeAnalyzer\AttributeFinder
|
||||||
|
*/
|
||||||
|
private $attributeFinder;
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var \Rector\Doctrine\NodeAnalyzer\TargetEntityResolver
|
||||||
|
*/
|
||||||
|
private $targetEntityResolver;
|
||||||
|
public function __construct(\Rector\NodeTypeResolver\PHPStan\Type\TypeFactory $typeFactory, \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory $phpDocInfoFactory, \Rector\BetterPhpDocParser\PhpDocParser\ClassAnnotationMatcher $classAnnotationMatcher, \Rector\Doctrine\NodeAnalyzer\AttributeFinder $attributeFinder, \Rector\Doctrine\NodeAnalyzer\TargetEntityResolver $targetEntityResolver)
|
||||||
{
|
{
|
||||||
$this->typeFactory = $typeFactory;
|
$this->typeFactory = $typeFactory;
|
||||||
$this->phpDocInfoFactory = $phpDocInfoFactory;
|
$this->phpDocInfoFactory = $phpDocInfoFactory;
|
||||||
$this->classAnnotationMatcher = $classAnnotationMatcher;
|
$this->classAnnotationMatcher = $classAnnotationMatcher;
|
||||||
|
$this->attributeFinder = $attributeFinder;
|
||||||
|
$this->targetEntityResolver = $targetEntityResolver;
|
||||||
}
|
}
|
||||||
public function resolve(\PhpParser\Node\Stmt\Property $property) : ?\PHPStan\Type\Type
|
public function resolve(\PhpParser\Node\Stmt\Property $property) : ?\PHPStan\Type\Type
|
||||||
{
|
{
|
||||||
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
|
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
|
||||||
$toOneRelationTagValueNode = $phpDocInfo->getByAnnotationClasses(['Doctrine\\ORM\\Mapping\\ManyToOne', 'Doctrine\\ORM\\Mapping\\OneToOne']);
|
$toOneRelationTagValueNode = $phpDocInfo->getByAnnotationClasses(self::TO_ONE_ANNOTATION_CLASSES);
|
||||||
if ($toOneRelationTagValueNode !== null) {
|
if ($toOneRelationTagValueNode instanceof \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode) {
|
||||||
$joinDoctrineAnnotationTagValueNode = $phpDocInfo->findOneByAnnotationClass('Doctrine\\ORM\\Mapping\\JoinColumn');
|
return $this->resolveFromDocBlock($phpDocInfo, $property, $toOneRelationTagValueNode);
|
||||||
return $this->processToOneRelation($property, $toOneRelationTagValueNode, $joinDoctrineAnnotationTagValueNode);
|
}
|
||||||
|
$targetEntity = $this->attributeFinder->findAttributeByClassesArgByName($property, self::TO_ONE_ANNOTATION_CLASSES, 'targetEntity');
|
||||||
|
if (!$targetEntity instanceof \PhpParser\Node\Expr) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
$targetEntityClass = $this->targetEntityResolver->resolveFromExpr($targetEntity);
|
||||||
|
if ($targetEntityClass !== null) {
|
||||||
|
$fullyQualifiedObjectType = new \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType($targetEntityClass);
|
||||||
|
// @todo resolve nullable value
|
||||||
|
return $this->resolveFromObjectType($fullyQualifiedObjectType, \false);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -59,9 +88,25 @@ final class ToOneRelationPropertyTypeResolver
|
|||||||
}
|
}
|
||||||
// resolve to FQN
|
// resolve to FQN
|
||||||
$tagFullyQualifiedName = $this->classAnnotationMatcher->resolveTagFullyQualifiedName($targetEntity, $property);
|
$tagFullyQualifiedName = $this->classAnnotationMatcher->resolveTagFullyQualifiedName($targetEntity, $property);
|
||||||
|
$fullyQualifiedObjectType = new \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType($tagFullyQualifiedName);
|
||||||
|
$isNullable = $this->isNullableType($joinDoctrineAnnotationTagValueNode);
|
||||||
|
return $this->resolveFromObjectType($fullyQualifiedObjectType, $isNullable);
|
||||||
|
}
|
||||||
|
private function shouldAddNullType(\Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode $doctrineAnnotationTagValueNode) : bool
|
||||||
|
{
|
||||||
|
$isNullableValue = $doctrineAnnotationTagValueNode->getValue('nullable');
|
||||||
|
return $isNullableValue instanceof \PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprTrueNode;
|
||||||
|
}
|
||||||
|
private function resolveFromDocBlock(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo, \PhpParser\Node\Stmt\Property $property, \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode $toOneRelationTagValueNode) : \PHPStan\Type\Type
|
||||||
|
{
|
||||||
|
$joinDoctrineAnnotationTagValueNode = $phpDocInfo->findOneByAnnotationClass('Doctrine\\ORM\\Mapping\\JoinColumn');
|
||||||
|
return $this->processToOneRelation($property, $toOneRelationTagValueNode, $joinDoctrineAnnotationTagValueNode);
|
||||||
|
}
|
||||||
|
private function resolveFromObjectType(\Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType $fullyQualifiedObjectType, bool $isNullable) : \PHPStan\Type\Type
|
||||||
|
{
|
||||||
$types = [];
|
$types = [];
|
||||||
$types[] = new \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType($tagFullyQualifiedName);
|
$types[] = $fullyQualifiedObjectType;
|
||||||
if ($joinDoctrineAnnotationTagValueNode instanceof \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode && $this->shouldAddNullType($joinDoctrineAnnotationTagValueNode)) {
|
if ($isNullable) {
|
||||||
$types[] = new \PHPStan\Type\NullType();
|
$types[] = new \PHPStan\Type\NullType();
|
||||||
}
|
}
|
||||||
$propertyType = $this->typeFactory->createMixedPassedOrUnionType($types);
|
$propertyType = $this->typeFactory->createMixedPassedOrUnionType($types);
|
||||||
@ -71,9 +116,11 @@ final class ToOneRelationPropertyTypeResolver
|
|||||||
}
|
}
|
||||||
return $propertyType;
|
return $propertyType;
|
||||||
}
|
}
|
||||||
private function shouldAddNullType(\Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode $doctrineAnnotationTagValueNode) : bool
|
private function isNullableType(?\Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode $joinDoctrineAnnotationTagValueNode) : bool
|
||||||
{
|
{
|
||||||
$isNullableValue = $doctrineAnnotationTagValueNode->getValue('nullable');
|
if (!$joinDoctrineAnnotationTagValueNode instanceof \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode) {
|
||||||
return $isNullableValue instanceof \PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprTrueNode;
|
return \false;
|
||||||
|
}
|
||||||
|
return $this->shouldAddNullType($joinDoctrineAnnotationTagValueNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,14 +13,17 @@ use Rector\Doctrine\PhpDoc\ShortClassExpander;
|
|||||||
final class DoctrineDocBlockResolver
|
final class DoctrineDocBlockResolver
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
||||||
*/
|
*/
|
||||||
private $phpDocInfoFactory;
|
private $phpDocInfoFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\PhpDoc\ShortClassExpander
|
* @var \Rector\Doctrine\PhpDoc\ShortClassExpander
|
||||||
*/
|
*/
|
||||||
private $shortClassExpander;
|
private $shortClassExpander;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
|
@ -20,10 +20,12 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class MakeEntitySetterNullabilityInSyncWithPropertyRector extends \Rector\Core\Rector\AbstractRector
|
final class MakeEntitySetterNullabilityInSyncWithPropertyRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeAnalyzer\SetterClassMethodAnalyzer
|
* @var \Rector\Doctrine\NodeAnalyzer\SetterClassMethodAnalyzer
|
||||||
*/
|
*/
|
||||||
private $setterClassMethodAnalyzer;
|
private $setterClassMethodAnalyzer;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\PhpDocParser\DoctrineDocBlockResolver
|
* @var \Rector\Doctrine\PhpDocParser\DoctrineDocBlockResolver
|
||||||
*/
|
*/
|
||||||
private $doctrineDocBlockResolver;
|
private $doctrineDocBlockResolver;
|
||||||
|
@ -31,22 +31,27 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class ServiceEntityRepositoryParentCallToDIRector extends \Rector\Core\Rector\AbstractRector
|
final class ServiceEntityRepositoryParentCallToDIRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeFactory\RepositoryNodeFactory
|
* @var \Rector\Doctrine\NodeFactory\RepositoryNodeFactory
|
||||||
*/
|
*/
|
||||||
private $repositoryNodeFactory;
|
private $repositoryNodeFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\Type\RepositoryTypeFactory
|
* @var \Rector\Doctrine\Type\RepositoryTypeFactory
|
||||||
*/
|
*/
|
||||||
private $repositoryTypeFactory;
|
private $repositoryTypeFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\PostRector\Collector\PropertyToAddCollector
|
* @var \Rector\PostRector\Collector\PropertyToAddCollector
|
||||||
*/
|
*/
|
||||||
private $propertyToAddCollector;
|
private $propertyToAddCollector;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassDependencyManipulator
|
* @var \Rector\Core\NodeManipulator\ClassDependencyManipulator
|
||||||
*/
|
*/
|
||||||
private $classDependencyManipulator;
|
private $classDependencyManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Naming\Naming\PropertyNaming
|
* @var \Rector\Naming\Naming\PropertyNaming
|
||||||
*/
|
*/
|
||||||
private $propertyNaming;
|
private $propertyNaming;
|
||||||
|
@ -28,18 +28,22 @@ final class AddEntityIdByConditionRector extends \Rector\Core\Rector\AbstractRec
|
|||||||
*/
|
*/
|
||||||
private $detectedTraits = [];
|
private $detectedTraits = [];
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeFactory\EntityIdNodeFactory
|
* @var \Rector\Doctrine\NodeFactory\EntityIdNodeFactory
|
||||||
*/
|
*/
|
||||||
private $entityIdNodeFactory;
|
private $entityIdNodeFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
||||||
*/
|
*/
|
||||||
private $classInsertManipulator;
|
private $classInsertManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \PHPStan\Reflection\ReflectionProvider
|
* @var \PHPStan\Reflection\ReflectionProvider
|
||||||
*/
|
*/
|
||||||
private $reflectionProvider;
|
private $reflectionProvider;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeAnalyzer\ClassAnalyzer
|
* @var \Rector\Core\NodeAnalyzer\ClassAnalyzer
|
||||||
*/
|
*/
|
||||||
private $classAnalyzer;
|
private $classAnalyzer;
|
||||||
|
@ -19,6 +19,7 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class BlameableBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
final class BlameableBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
||||||
*/
|
*/
|
||||||
private $classInsertManipulator;
|
private $classInsertManipulator;
|
||||||
|
@ -31,26 +31,32 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class ClassAnnotationToNamedArgumentConstructorRector extends \Rector\Core\Rector\AbstractRector
|
final class ClassAnnotationToNamedArgumentConstructorRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeFactory\ParamFactory
|
* @var \Rector\Doctrine\NodeFactory\ParamFactory
|
||||||
*/
|
*/
|
||||||
private $paramFactory;
|
private $paramFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeFactory\ConstructClassMethodFactory
|
* @var \Rector\Doctrine\NodeFactory\ConstructClassMethodFactory
|
||||||
*/
|
*/
|
||||||
private $constructClassMethodFactory;
|
private $constructClassMethodFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
||||||
*/
|
*/
|
||||||
private $classInsertManipulator;
|
private $classInsertManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeAnalyzer\AssignPropertyFetchAnalyzer
|
* @var \Rector\Doctrine\NodeAnalyzer\AssignPropertyFetchAnalyzer
|
||||||
*/
|
*/
|
||||||
private $assignPropertyFetchAnalyzer;
|
private $assignPropertyFetchAnalyzer;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeManipulator\IssetDimFetchCleaner
|
* @var \Rector\Doctrine\NodeManipulator\IssetDimFetchCleaner
|
||||||
*/
|
*/
|
||||||
private $issetDimFetchCleaner;
|
private $issetDimFetchCleaner;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeFactory\ConstructorClassMethodAssignFactory
|
* @var \Rector\Doctrine\NodeFactory\ConstructorClassMethodAssignFactory
|
||||||
*/
|
*/
|
||||||
private $constructorClassMethodAssignFactory;
|
private $constructorClassMethodAssignFactory;
|
||||||
|
@ -22,6 +22,7 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class InitializeDefaultEntityCollectionRector extends \Rector\Core\Rector\AbstractRector
|
final class InitializeDefaultEntityCollectionRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassDependencyManipulator
|
* @var \Rector\Core\NodeManipulator\ClassDependencyManipulator
|
||||||
*/
|
*/
|
||||||
private $classDependencyManipulator;
|
private $classDependencyManipulator;
|
||||||
|
@ -23,6 +23,7 @@ use RectorPrefix20220117\Symplify\SimplePhpDocParser\PhpDocNodeTraverser;
|
|||||||
final class LoggableBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
final class LoggableBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
||||||
*/
|
*/
|
||||||
private $classInsertManipulator;
|
private $classInsertManipulator;
|
||||||
|
@ -37,14 +37,17 @@ final class ManagerRegistryGetManagerToEntityManagerRector extends \Rector\Core\
|
|||||||
*/
|
*/
|
||||||
private const ENTITY_MANAGER = 'entityManager';
|
private const ENTITY_MANAGER = 'entityManager';
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeAnalyzer\MethodCallNameOnTypeResolver
|
* @var \Rector\Doctrine\NodeAnalyzer\MethodCallNameOnTypeResolver
|
||||||
*/
|
*/
|
||||||
private $methodCallNameOnTypeResolver;
|
private $methodCallNameOnTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeManipulator\DependencyRemover
|
* @var \Rector\Doctrine\NodeManipulator\DependencyRemover
|
||||||
*/
|
*/
|
||||||
private $dependencyRemover;
|
private $dependencyRemover;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\PostRector\Collector\PropertyToAddCollector
|
* @var \Rector\PostRector\Collector\PropertyToAddCollector
|
||||||
*/
|
*/
|
||||||
private $propertyToAddCollector;
|
private $propertyToAddCollector;
|
||||||
|
@ -23,14 +23,17 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class MoveCurrentDateTimeDefaultInEntityToConstructorRector extends \Rector\Core\Rector\AbstractRector
|
final class MoveCurrentDateTimeDefaultInEntityToConstructorRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeManipulator\ConstructorManipulator
|
* @var \Rector\Doctrine\NodeManipulator\ConstructorManipulator
|
||||||
*/
|
*/
|
||||||
private $constructorManipulator;
|
private $constructorManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeFactory\ValueAssignFactory
|
* @var \Rector\Doctrine\NodeFactory\ValueAssignFactory
|
||||||
*/
|
*/
|
||||||
private $valueAssignFactory;
|
private $valueAssignFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeAnalyzer\ConstructorAssignPropertyAnalyzer
|
* @var \Rector\Doctrine\NodeAnalyzer\ConstructorAssignPropertyAnalyzer
|
||||||
*/
|
*/
|
||||||
private $constructorAssignPropertyAnalyzer;
|
private $constructorAssignPropertyAnalyzer;
|
||||||
|
@ -20,18 +20,22 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class MoveRepositoryFromParentToConstructorRector extends \Rector\Core\Rector\AbstractRector
|
final class MoveRepositoryFromParentToConstructorRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassDependencyManipulator
|
* @var \Rector\Core\NodeManipulator\ClassDependencyManipulator
|
||||||
*/
|
*/
|
||||||
private $classDependencyManipulator;
|
private $classDependencyManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
||||||
*/
|
*/
|
||||||
private $classInsertManipulator;
|
private $classInsertManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeFactory\RepositoryAssignFactory
|
* @var \Rector\Doctrine\NodeFactory\RepositoryAssignFactory
|
||||||
*/
|
*/
|
||||||
private $repositoryAssignFactory;
|
private $repositoryAssignFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeAnalyzer\EntityObjectTypeResolver
|
* @var \Rector\Doctrine\NodeAnalyzer\EntityObjectTypeResolver
|
||||||
*/
|
*/
|
||||||
private $entityObjectTypeResolver;
|
private $entityObjectTypeResolver;
|
||||||
|
@ -16,6 +16,7 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class RemoveRedundantDefaultClassAnnotationValuesRector extends \Rector\Core\Rector\AbstractRector
|
final class RemoveRedundantDefaultClassAnnotationValuesRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeManipulator\DoctrineItemDefaultValueManipulator
|
* @var \Rector\Doctrine\NodeManipulator\DoctrineItemDefaultValueManipulator
|
||||||
*/
|
*/
|
||||||
private $doctrineItemDefaultValueManipulator;
|
private $doctrineItemDefaultValueManipulator;
|
||||||
|
@ -28,10 +28,12 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class SluggableBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
final class SluggableBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
||||||
*/
|
*/
|
||||||
private $classInsertManipulator;
|
private $classInsertManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
|
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
|
||||||
*/
|
*/
|
||||||
private $phpDocTypeChanger;
|
private $phpDocTypeChanger;
|
||||||
|
@ -21,10 +21,12 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class SoftDeletableBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
final class SoftDeletableBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
||||||
*/
|
*/
|
||||||
private $classInsertManipulator;
|
private $classInsertManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover
|
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover
|
||||||
*/
|
*/
|
||||||
private $phpDocTagRemover;
|
private $phpDocTagRemover;
|
||||||
|
@ -19,6 +19,7 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class TimestampableBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
final class TimestampableBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassManipulator
|
* @var \Rector\Core\NodeManipulator\ClassManipulator
|
||||||
*/
|
*/
|
||||||
private $classManipulator;
|
private $classManipulator;
|
||||||
|
@ -30,18 +30,22 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class TranslationBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
final class TranslationBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
||||||
*/
|
*/
|
||||||
private $classInsertManipulator;
|
private $classInsertManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassManipulator
|
* @var \Rector\Core\NodeManipulator\ClassManipulator
|
||||||
*/
|
*/
|
||||||
private $classManipulator;
|
private $classManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeFactory\TranslationClassNodeFactory
|
* @var \Rector\Doctrine\NodeFactory\TranslationClassNodeFactory
|
||||||
*/
|
*/
|
||||||
private $translationClassNodeFactory;
|
private $translationClassNodeFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeAnalyzer\TranslatablePropertyCollectorAndRemover
|
* @var \Rector\Doctrine\NodeAnalyzer\TranslatablePropertyCollectorAndRemover
|
||||||
*/
|
*/
|
||||||
private $translatablePropertyCollectorAndRemover;
|
private $translatablePropertyCollectorAndRemover;
|
||||||
|
@ -22,10 +22,12 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class TreeBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
final class TreeBehaviorRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
* @var \Rector\Core\NodeManipulator\ClassInsertManipulator
|
||||||
*/
|
*/
|
||||||
private $classInsertManipulator;
|
private $classInsertManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover
|
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover
|
||||||
*/
|
*/
|
||||||
private $phpDocTagRemover;
|
private $phpDocTagRemover;
|
||||||
|
@ -26,10 +26,12 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class ChangeSetParametersArrayToArrayCollectionRector extends \Rector\Core\Rector\AbstractRector
|
final class ChangeSetParametersArrayToArrayCollectionRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\TypeAnalyzer\ArrayTypeAnalyzer
|
* @var \Rector\NodeTypeResolver\TypeAnalyzer\ArrayTypeAnalyzer
|
||||||
*/
|
*/
|
||||||
private $arrayTypeAnalyzer;
|
private $arrayTypeAnalyzer;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Defluent\NodeAnalyzer\FluentChainMethodCallNodeAnalyzer
|
* @var \Rector\Defluent\NodeAnalyzer\FluentChainMethodCallNodeAnalyzer
|
||||||
*/
|
*/
|
||||||
private $fluentChainMethodCallNodeAnalyzer;
|
private $fluentChainMethodCallNodeAnalyzer;
|
||||||
|
@ -26,6 +26,7 @@ final class ReplaceParentRepositoryCallsByRepositoryPropertyRector extends \Rect
|
|||||||
*/
|
*/
|
||||||
private const ENTITY_REPOSITORY_PUBLIC_METHODS = ['createQueryBuilder', 'createResultSetMappingBuilder', 'clear', 'find', 'findBy', 'findAll', 'findOneBy', 'count', 'getClassName', 'matching'];
|
private const ENTITY_REPOSITORY_PUBLIC_METHODS = ['createQueryBuilder', 'createResultSetMappingBuilder', 'clear', 'find', 'findBy', 'findAll', 'findOneBy', 'count', 'getClassName', 'matching'];
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\PostRector\Collector\PropertyToAddCollector
|
* @var \Rector\PostRector\Collector\PropertyToAddCollector
|
||||||
*/
|
*/
|
||||||
private $propertyToAddCollector;
|
private $propertyToAddCollector;
|
||||||
|
@ -24,6 +24,7 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class ChangeBigIntEntityPropertyToIntTypeRector extends \Rector\Core\Rector\AbstractRector
|
final class ChangeBigIntEntityPropertyToIntTypeRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockClassRenamer
|
* @var \Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockClassRenamer
|
||||||
*/
|
*/
|
||||||
private $docBlockClassRenamer;
|
private $docBlockClassRenamer;
|
||||||
|
@ -4,16 +4,20 @@ declare (strict_types=1);
|
|||||||
namespace Rector\Doctrine\Rector\Property;
|
namespace Rector\Doctrine\Rector\Property;
|
||||||
|
|
||||||
use PhpParser\Node;
|
use PhpParser\Node;
|
||||||
|
use PhpParser\Node\Expr;
|
||||||
use PhpParser\Node\Stmt\ClassLike;
|
use PhpParser\Node\Stmt\ClassLike;
|
||||||
use PhpParser\Node\Stmt\ClassMethod;
|
use PhpParser\Node\Stmt\ClassMethod;
|
||||||
use PhpParser\Node\Stmt\Property;
|
use PhpParser\Node\Stmt\Property;
|
||||||
use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
|
use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
|
||||||
use PHPStan\Reflection\Php\PhpPropertyReflection;
|
use PHPStan\Reflection\Php\PhpPropertyReflection;
|
||||||
use PHPStan\Type\Type;
|
use PHPStan\Type\Type;
|
||||||
|
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
|
||||||
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger;
|
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger;
|
||||||
use Rector\Core\NodeManipulator\AssignManipulator;
|
use Rector\Core\NodeManipulator\AssignManipulator;
|
||||||
use Rector\Core\Rector\AbstractRector;
|
use Rector\Core\Rector\AbstractRector;
|
||||||
use Rector\Core\Reflection\ReflectionResolver;
|
use Rector\Core\Reflection\ReflectionResolver;
|
||||||
|
use Rector\Doctrine\NodeAnalyzer\AttributeFinder;
|
||||||
|
use Rector\Doctrine\NodeAnalyzer\TargetEntityResolver;
|
||||||
use Rector\Doctrine\PhpDocParser\DoctrineDocBlockResolver;
|
use Rector\Doctrine\PhpDocParser\DoctrineDocBlockResolver;
|
||||||
use Rector\Doctrine\TypeAnalyzer\CollectionTypeFactory;
|
use Rector\Doctrine\TypeAnalyzer\CollectionTypeFactory;
|
||||||
use Rector\Doctrine\TypeAnalyzer\CollectionTypeResolver;
|
use Rector\Doctrine\TypeAnalyzer\CollectionTypeResolver;
|
||||||
@ -27,34 +31,51 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class ImproveDoctrineCollectionDocTypeInEntityRector extends \Rector\Core\Rector\AbstractRector
|
final class ImproveDoctrineCollectionDocTypeInEntityRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\TypeAnalyzer\CollectionTypeFactory
|
* @var \Rector\Doctrine\TypeAnalyzer\CollectionTypeFactory
|
||||||
*/
|
*/
|
||||||
private $collectionTypeFactory;
|
private $collectionTypeFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeManipulator\AssignManipulator
|
* @var \Rector\Core\NodeManipulator\AssignManipulator
|
||||||
*/
|
*/
|
||||||
private $assignManipulator;
|
private $assignManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\TypeAnalyzer\CollectionTypeResolver
|
* @var \Rector\Doctrine\TypeAnalyzer\CollectionTypeResolver
|
||||||
*/
|
*/
|
||||||
private $collectionTypeResolver;
|
private $collectionTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\TypeAnalyzer\CollectionVarTagValueNodeResolver
|
* @var \Rector\Doctrine\TypeAnalyzer\CollectionVarTagValueNodeResolver
|
||||||
*/
|
*/
|
||||||
private $collectionVarTagValueNodeResolver;
|
private $collectionVarTagValueNodeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
|
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
|
||||||
*/
|
*/
|
||||||
private $phpDocTypeChanger;
|
private $phpDocTypeChanger;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\PhpDocParser\DoctrineDocBlockResolver
|
* @var \Rector\Doctrine\PhpDocParser\DoctrineDocBlockResolver
|
||||||
*/
|
*/
|
||||||
private $doctrineDocBlockResolver;
|
private $doctrineDocBlockResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\Reflection\ReflectionResolver
|
* @var \Rector\Core\Reflection\ReflectionResolver
|
||||||
*/
|
*/
|
||||||
private $reflectionResolver;
|
private $reflectionResolver;
|
||||||
public function __construct(\Rector\Doctrine\TypeAnalyzer\CollectionTypeFactory $collectionTypeFactory, \Rector\Core\NodeManipulator\AssignManipulator $assignManipulator, \Rector\Doctrine\TypeAnalyzer\CollectionTypeResolver $collectionTypeResolver, \Rector\Doctrine\TypeAnalyzer\CollectionVarTagValueNodeResolver $collectionVarTagValueNodeResolver, \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger $phpDocTypeChanger, \Rector\Doctrine\PhpDocParser\DoctrineDocBlockResolver $doctrineDocBlockResolver, \Rector\Core\Reflection\ReflectionResolver $reflectionResolver)
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var \Rector\Doctrine\NodeAnalyzer\AttributeFinder
|
||||||
|
*/
|
||||||
|
private $attributeFinder;
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var \Rector\Doctrine\NodeAnalyzer\TargetEntityResolver
|
||||||
|
*/
|
||||||
|
private $targetEntityResolver;
|
||||||
|
public function __construct(\Rector\Doctrine\TypeAnalyzer\CollectionTypeFactory $collectionTypeFactory, \Rector\Core\NodeManipulator\AssignManipulator $assignManipulator, \Rector\Doctrine\TypeAnalyzer\CollectionTypeResolver $collectionTypeResolver, \Rector\Doctrine\TypeAnalyzer\CollectionVarTagValueNodeResolver $collectionVarTagValueNodeResolver, \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger $phpDocTypeChanger, \Rector\Doctrine\PhpDocParser\DoctrineDocBlockResolver $doctrineDocBlockResolver, \Rector\Core\Reflection\ReflectionResolver $reflectionResolver, \Rector\Doctrine\NodeAnalyzer\AttributeFinder $attributeFinder, \Rector\Doctrine\NodeAnalyzer\TargetEntityResolver $targetEntityResolver)
|
||||||
{
|
{
|
||||||
$this->collectionTypeFactory = $collectionTypeFactory;
|
$this->collectionTypeFactory = $collectionTypeFactory;
|
||||||
$this->assignManipulator = $assignManipulator;
|
$this->assignManipulator = $assignManipulator;
|
||||||
@ -63,6 +84,8 @@ final class ImproveDoctrineCollectionDocTypeInEntityRector extends \Rector\Core\
|
|||||||
$this->phpDocTypeChanger = $phpDocTypeChanger;
|
$this->phpDocTypeChanger = $phpDocTypeChanger;
|
||||||
$this->doctrineDocBlockResolver = $doctrineDocBlockResolver;
|
$this->doctrineDocBlockResolver = $doctrineDocBlockResolver;
|
||||||
$this->reflectionResolver = $reflectionResolver;
|
$this->reflectionResolver = $reflectionResolver;
|
||||||
|
$this->attributeFinder = $attributeFinder;
|
||||||
|
$this->targetEntityResolver = $targetEntityResolver;
|
||||||
}
|
}
|
||||||
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
|
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
|
||||||
{
|
{
|
||||||
@ -120,26 +143,14 @@ CODE_SAMPLE
|
|||||||
private function refactorProperty(\PhpParser\Node\Stmt\Property $property) : ?\PhpParser\Node\Stmt\Property
|
private function refactorProperty(\PhpParser\Node\Stmt\Property $property) : ?\PhpParser\Node\Stmt\Property
|
||||||
{
|
{
|
||||||
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
|
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
|
||||||
if (!$phpDocInfo->hasByAnnotationClass('Doctrine\\ORM\\Mapping\\OneToMany')) {
|
if ($phpDocInfo->hasByAnnotationClass('Doctrine\\ORM\\Mapping\\OneToMany')) {
|
||||||
|
return $this->refactorPropertyPhpDocInfo($property, $phpDocInfo);
|
||||||
|
}
|
||||||
|
$targetEntityExpr = $this->attributeFinder->findAttributeByClassArgByName($property, 'Doctrine\\ORM\\Mapping\\OneToMany', 'targetEntity');
|
||||||
|
if (!$targetEntityExpr instanceof \PhpParser\Node\Expr) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$varTagValueNode = $this->collectionVarTagValueNodeResolver->resolve($property);
|
return $this->refactorAttribute($targetEntityExpr, $phpDocInfo, $property);
|
||||||
if ($varTagValueNode !== null) {
|
|
||||||
$collectionObjectType = $this->collectionTypeResolver->resolveFromTypeNode($varTagValueNode->type, $property);
|
|
||||||
if (!$collectionObjectType instanceof \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
$newVarType = $this->collectionTypeFactory->createType($collectionObjectType);
|
|
||||||
$this->phpDocTypeChanger->changeVarType($phpDocInfo, $newVarType);
|
|
||||||
} else {
|
|
||||||
$collectionObjectType = $this->collectionTypeResolver->resolveFromOneToManyProperty($property);
|
|
||||||
if (!$collectionObjectType instanceof \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
$newVarType = $this->collectionTypeFactory->createType($collectionObjectType);
|
|
||||||
$this->phpDocTypeChanger->changeVarType($phpDocInfo, $newVarType);
|
|
||||||
}
|
|
||||||
return $property;
|
|
||||||
}
|
}
|
||||||
private function refactorClassMethod(\PhpParser\Node\Stmt\ClassMethod $classMethod) : ?\PhpParser\Node\Stmt\ClassMethod
|
private function refactorClassMethod(\PhpParser\Node\Stmt\ClassMethod $classMethod) : ?\PhpParser\Node\Stmt\ClassMethod
|
||||||
{
|
{
|
||||||
@ -191,4 +202,35 @@ CODE_SAMPLE
|
|||||||
}
|
}
|
||||||
return $this->staticTypeMapper->mapPHPStanPhpDocTypeNodeToPHPStanType($varTagValueNode->type, $property);
|
return $this->staticTypeMapper->mapPHPStanPhpDocTypeNodeToPHPStanType($varTagValueNode->type, $property);
|
||||||
}
|
}
|
||||||
|
private function refactorPropertyPhpDocInfo(\PhpParser\Node\Stmt\Property $property, \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo) : ?\PhpParser\Node\Stmt\Property
|
||||||
|
{
|
||||||
|
$varTagValueNode = $this->collectionVarTagValueNodeResolver->resolve($property);
|
||||||
|
if ($varTagValueNode !== null) {
|
||||||
|
$collectionObjectType = $this->collectionTypeResolver->resolveFromTypeNode($varTagValueNode->type, $property);
|
||||||
|
if (!$collectionObjectType instanceof \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
$newVarType = $this->collectionTypeFactory->createType($collectionObjectType);
|
||||||
|
$this->phpDocTypeChanger->changeVarType($phpDocInfo, $newVarType);
|
||||||
|
} else {
|
||||||
|
$collectionObjectType = $this->collectionTypeResolver->resolveFromOneToManyProperty($property);
|
||||||
|
if (!$collectionObjectType instanceof \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
$newVarType = $this->collectionTypeFactory->createType($collectionObjectType);
|
||||||
|
$this->phpDocTypeChanger->changeVarType($phpDocInfo, $newVarType);
|
||||||
|
}
|
||||||
|
return $property;
|
||||||
|
}
|
||||||
|
private function refactorAttribute(\PhpParser\Node\Expr $targetEntity, \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo, \PhpParser\Node\Stmt\Property $property) : ?\PhpParser\Node\Stmt\Property
|
||||||
|
{
|
||||||
|
$targetEntityClassName = $this->targetEntityResolver->resolveFromExpr($targetEntity);
|
||||||
|
if ($targetEntityClassName === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
$collectionObjectType = new \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType($targetEntityClassName);
|
||||||
|
$newVarType = $this->collectionTypeFactory->createType($collectionObjectType);
|
||||||
|
$this->phpDocTypeChanger->changeVarType($phpDocInfo, $newVarType);
|
||||||
|
return $property;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class MakeEntityDateTimePropertyDateTimeInterfaceRector extends \Rector\Core\Rector\AbstractRector
|
final class MakeEntityDateTimePropertyDateTimeInterfaceRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeManipulator\PropertyTypeManipulator
|
* @var \Rector\Doctrine\NodeManipulator\PropertyTypeManipulator
|
||||||
*/
|
*/
|
||||||
private $propertyTypeManipulator;
|
private $propertyTypeManipulator;
|
||||||
|
@ -4,41 +4,54 @@ declare (strict_types=1);
|
|||||||
namespace Rector\Doctrine\Rector\Property;
|
namespace Rector\Doctrine\Rector\Property;
|
||||||
|
|
||||||
use PhpParser\Node;
|
use PhpParser\Node;
|
||||||
|
use PhpParser\Node\Expr;
|
||||||
use PhpParser\Node\Stmt\Property;
|
use PhpParser\Node\Stmt\Property;
|
||||||
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
|
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
|
||||||
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
|
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
|
||||||
use Rector\Core\Rector\AbstractRector;
|
use Rector\Core\Rector\AbstractRector;
|
||||||
|
use Rector\Doctrine\NodeAnalyzer\AttributeCleaner;
|
||||||
|
use Rector\Doctrine\NodeAnalyzer\AttributeFinder;
|
||||||
use Rector\Doctrine\NodeManipulator\DoctrineItemDefaultValueManipulator;
|
use Rector\Doctrine\NodeManipulator\DoctrineItemDefaultValueManipulator;
|
||||||
|
use Rector\Doctrine\ValueObject\ArgName;
|
||||||
|
use Rector\Doctrine\ValueObject\DefaultAnnotationArgValue;
|
||||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||||
/**
|
/**
|
||||||
* @see \Rector\Doctrine\Tests\Rector\Property\RemoveRedundantDefaultPropertyAnnotationValuesRector\RemoveRedundantDefaultPropertyAnnotationValuesRectorTest
|
* @see \Rector\Doctrine\Tests\Rector\Property\RemoveRedundantDefaultPropertyAnnotationValuesRector\RemoveRedundantDefaultPropertyAnnotationValuesRectorTest
|
||||||
|
*
|
||||||
|
* @changelog https://www.doctrine-project.org/projects/doctrine-orm/en/2.8/reference/basic-mapping.html#property-mapping
|
||||||
*/
|
*/
|
||||||
final class RemoveRedundantDefaultPropertyAnnotationValuesRector extends \Rector\Core\Rector\AbstractRector
|
final class RemoveRedundantDefaultPropertyAnnotationValuesRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var DefaultAnnotationArgValue[]
|
||||||
*/
|
*/
|
||||||
private const ORPHAN_REMOVAL = 'orphanRemoval';
|
private $defaultAnnotationArgValues = [];
|
||||||
/**
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private const FETCH = 'fetch';
|
|
||||||
/**
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private const LAZY = 'LAZY';
|
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeManipulator\DoctrineItemDefaultValueManipulator
|
* @var \Rector\Doctrine\NodeManipulator\DoctrineItemDefaultValueManipulator
|
||||||
*/
|
*/
|
||||||
private $doctrineItemDefaultValueManipulator;
|
private $doctrineItemDefaultValueManipulator;
|
||||||
public function __construct(\Rector\Doctrine\NodeManipulator\DoctrineItemDefaultValueManipulator $doctrineItemDefaultValueManipulator)
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var \Rector\Doctrine\NodeAnalyzer\AttributeFinder
|
||||||
|
*/
|
||||||
|
private $attributeFinder;
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var \Rector\Doctrine\NodeAnalyzer\AttributeCleaner
|
||||||
|
*/
|
||||||
|
private $attributeCleaner;
|
||||||
|
public function __construct(\Rector\Doctrine\NodeManipulator\DoctrineItemDefaultValueManipulator $doctrineItemDefaultValueManipulator, \Rector\Doctrine\NodeAnalyzer\AttributeFinder $attributeFinder, \Rector\Doctrine\NodeAnalyzer\AttributeCleaner $attributeCleaner)
|
||||||
{
|
{
|
||||||
$this->doctrineItemDefaultValueManipulator = $doctrineItemDefaultValueManipulator;
|
$this->doctrineItemDefaultValueManipulator = $doctrineItemDefaultValueManipulator;
|
||||||
|
$this->attributeFinder = $attributeFinder;
|
||||||
|
$this->attributeCleaner = $attributeCleaner;
|
||||||
|
$this->defaultAnnotationArgValues = [new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\Column', 'nullable', \false), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\Column', 'unique', \false), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\Column', 'precision', 0), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\Column', 'scale', 0), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\GeneratedValue', 'strategy', 'AUTO'), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\JoinColumn', 'unique', \false), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\JoinColumn', 'nullable', \true), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\JoinColumn', 'referencedColumnName', 'id'), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\ManyToMany', \Rector\Doctrine\ValueObject\ArgName::ORPHAN_REMOVAL, \false), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\ManyToMany', \Rector\Doctrine\ValueObject\ArgName::FETCH, \Rector\Doctrine\ValueObject\ArgName::LAZY), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\ManyToOne', \Rector\Doctrine\ValueObject\ArgName::FETCH, \Rector\Doctrine\ValueObject\ArgName::LAZY), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\OneToMany', \Rector\Doctrine\ValueObject\ArgName::ORPHAN_REMOVAL, \false), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\OneToMany', \Rector\Doctrine\ValueObject\ArgName::FETCH, \Rector\Doctrine\ValueObject\ArgName::LAZY), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\OneToOne', \Rector\Doctrine\ValueObject\ArgName::ORPHAN_REMOVAL, \false), new \Rector\Doctrine\ValueObject\DefaultAnnotationArgValue('Doctrine\\ORM\\Mapping\\OneToOne', \Rector\Doctrine\ValueObject\ArgName::FETCH, \Rector\Doctrine\ValueObject\ArgName::LAZY)];
|
||||||
}
|
}
|
||||||
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
|
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
|
||||||
{
|
{
|
||||||
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Removes redundant default values from Doctrine ORM annotations on class property level', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
|
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Removes redundant default values from Doctrine ORM annotations/attributes properties', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -83,81 +96,37 @@ CODE_SAMPLE
|
|||||||
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
|
public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node
|
||||||
{
|
{
|
||||||
$this->refactorPropertyAnnotations($node);
|
$this->refactorPropertyAnnotations($node);
|
||||||
|
foreach ($this->defaultAnnotationArgValues as $defaultAnnotationArgValue) {
|
||||||
|
$argExpr = $this->attributeFinder->findAttributeByClassArgByName($node, $defaultAnnotationArgValue->getAnnotationClass(), $defaultAnnotationArgValue->getArgName());
|
||||||
|
if (!$argExpr instanceof \PhpParser\Node\Expr) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!$this->valueResolver->isValue($argExpr, $defaultAnnotationArgValue->getDefaultValue())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$this->attributeCleaner->clearAttributeAndArgName($node, $defaultAnnotationArgValue->getAnnotationClass(), $defaultAnnotationArgValue->getArgName());
|
||||||
|
}
|
||||||
return $node;
|
return $node;
|
||||||
}
|
}
|
||||||
private function refactorPropertyAnnotations(\PhpParser\Node\Stmt\Property $property) : void
|
private function refactorPropertyAnnotations(\PhpParser\Node\Stmt\Property $property) : void
|
||||||
{
|
{
|
||||||
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
|
$phpDocInfo = $this->phpDocInfoFactory->createFromNode($property);
|
||||||
$this->refactorColumnAnnotation($phpDocInfo);
|
if ($phpDocInfo instanceof \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo) {
|
||||||
$this->refactorGeneratedValueAnnotation($phpDocInfo);
|
foreach ($this->defaultAnnotationArgValues as $defaultAnnotationArgValue) {
|
||||||
$this->refactorJoinColumnAnnotation($phpDocInfo);
|
$this->refactorAnnotation($phpDocInfo, $defaultAnnotationArgValue->getAnnotationClass(), $defaultAnnotationArgValue->getArgName(), $defaultAnnotationArgValue->getDefaultValue());
|
||||||
$this->refactorManyToManyAnnotation($phpDocInfo);
|
}
|
||||||
$this->refactorManyToOneAnnotation($phpDocInfo);
|
}
|
||||||
$this->refactorOneToManyAnnotation($phpDocInfo);
|
|
||||||
$this->refactorOneToOneAnnotation($phpDocInfo);
|
|
||||||
}
|
}
|
||||||
private function refactorColumnAnnotation(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo) : void
|
/**
|
||||||
|
* @param class-string $annotationClass
|
||||||
|
* @param bool|int|string $defaultValue
|
||||||
|
*/
|
||||||
|
private function refactorAnnotation(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo, string $annotationClass, string $argName, $defaultValue) : void
|
||||||
{
|
{
|
||||||
$doctrineAnnotationTagValueNode = $phpDocInfo->getByAnnotationClass('Doctrine\\ORM\\Mapping\\Column');
|
$doctrineAnnotationTagValueNode = $phpDocInfo->getByAnnotationClass($annotationClass);
|
||||||
if (!$doctrineAnnotationTagValueNode instanceof \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode) {
|
if (!$doctrineAnnotationTagValueNode instanceof \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, 'nullable', \false);
|
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, $argName, $defaultValue);
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, 'unique', \false);
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, 'precision', 0);
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, 'scale', 0);
|
|
||||||
}
|
|
||||||
private function refactorGeneratedValueAnnotation(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo) : void
|
|
||||||
{
|
|
||||||
$doctrineAnnotationTagValueNode = $phpDocInfo->getByAnnotationClass('Doctrine\\ORM\\Mapping\\GeneratedValue');
|
|
||||||
if (!$doctrineAnnotationTagValueNode instanceof \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, 'strategy', 'AUTO');
|
|
||||||
}
|
|
||||||
private function refactorJoinColumnAnnotation(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo) : void
|
|
||||||
{
|
|
||||||
$doctrineAnnotationTagValueNode = $phpDocInfo->getByAnnotationClass('Doctrine\\ORM\\Mapping\\JoinColumn');
|
|
||||||
if (!$doctrineAnnotationTagValueNode instanceof \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, 'nullable', \true);
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, 'referencedColumnName', 'id');
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, 'unique', \false);
|
|
||||||
}
|
|
||||||
private function refactorManyToManyAnnotation(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo) : void
|
|
||||||
{
|
|
||||||
$doctrineAnnotationTagValueNode = $phpDocInfo->getByAnnotationClass('Doctrine\\ORM\\Mapping\\ManyToMany');
|
|
||||||
if (!$doctrineAnnotationTagValueNode instanceof \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, self::ORPHAN_REMOVAL, \false);
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, self::FETCH, self::LAZY);
|
|
||||||
}
|
|
||||||
private function refactorManyToOneAnnotation(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo) : void
|
|
||||||
{
|
|
||||||
$doctrineAnnotationTagValueNode = $phpDocInfo->getByAnnotationClass('Doctrine\\ORM\\Mapping\\ManyToOne');
|
|
||||||
if (!$doctrineAnnotationTagValueNode instanceof \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, self::FETCH, self::LAZY);
|
|
||||||
}
|
|
||||||
private function refactorOneToManyAnnotation(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo) : void
|
|
||||||
{
|
|
||||||
$doctrineAnnotationTagValueNode = $phpDocInfo->getByAnnotationClass('Doctrine\\ORM\\Mapping\\OneToMany');
|
|
||||||
if (!$doctrineAnnotationTagValueNode instanceof \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, self::ORPHAN_REMOVAL, \false);
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, self::FETCH, self::LAZY);
|
|
||||||
}
|
|
||||||
private function refactorOneToOneAnnotation(\Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo $phpDocInfo) : void
|
|
||||||
{
|
|
||||||
$doctrineAnnotationTagValueNode = $phpDocInfo->getByAnnotationClass('Doctrine\\ORM\\Mapping\\OneToOne');
|
|
||||||
if (!$doctrineAnnotationTagValueNode instanceof \Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, self::ORPHAN_REMOVAL, \false);
|
|
||||||
$this->doctrineItemDefaultValueManipulator->remove($phpDocInfo, $doctrineAnnotationTagValueNode, self::FETCH, self::LAZY);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,18 +24,22 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class TypedPropertyFromColumnTypeRector extends \Rector\Core\Rector\AbstractRector
|
final class TypedPropertyFromColumnTypeRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\TypeDeclaration\NodeTypeAnalyzer\PropertyTypeDecorator
|
* @var \Rector\TypeDeclaration\NodeTypeAnalyzer\PropertyTypeDecorator
|
||||||
*/
|
*/
|
||||||
private $propertyTypeDecorator;
|
private $propertyTypeDecorator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeManipulator\ColumnPropertyTypeResolver
|
* @var \Rector\Doctrine\NodeManipulator\ColumnPropertyTypeResolver
|
||||||
*/
|
*/
|
||||||
private $columnPropertyTypeResolver;
|
private $columnPropertyTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
|
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
|
||||||
*/
|
*/
|
||||||
private $phpDocTypeChanger;
|
private $phpDocTypeChanger;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeManipulator\NullabilityColumnPropertyTypeResolver
|
* @var \Rector\Doctrine\NodeManipulator\NullabilityColumnPropertyTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nullabilityColumnPropertyTypeResolver;
|
private $nullabilityColumnPropertyTypeResolver;
|
||||||
|
@ -22,14 +22,17 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class TypedPropertyFromToManyRelationTypeRector extends \Rector\Core\Rector\AbstractRector
|
final class TypedPropertyFromToManyRelationTypeRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\TypeDeclaration\NodeTypeAnalyzer\PropertyTypeDecorator
|
* @var \Rector\TypeDeclaration\NodeTypeAnalyzer\PropertyTypeDecorator
|
||||||
*/
|
*/
|
||||||
private $propertyTypeDecorator;
|
private $propertyTypeDecorator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
|
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
|
||||||
*/
|
*/
|
||||||
private $phpDocTypeChanger;
|
private $phpDocTypeChanger;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeManipulator\ToManyRelationPropertyTypeResolver
|
* @var \Rector\Doctrine\NodeManipulator\ToManyRelationPropertyTypeResolver
|
||||||
*/
|
*/
|
||||||
private $toManyRelationPropertyTypeResolver;
|
private $toManyRelationPropertyTypeResolver;
|
||||||
|
@ -4,6 +4,8 @@ declare (strict_types=1);
|
|||||||
namespace Rector\Doctrine\Rector\Property;
|
namespace Rector\Doctrine\Rector\Property;
|
||||||
|
|
||||||
use PhpParser\Node;
|
use PhpParser\Node;
|
||||||
|
use PhpParser\Node\ComplexType;
|
||||||
|
use PhpParser\Node\Name;
|
||||||
use PhpParser\Node\Stmt\Property;
|
use PhpParser\Node\Stmt\Property;
|
||||||
use PHPStan\Type\MixedType;
|
use PHPStan\Type\MixedType;
|
||||||
use PHPStan\Type\Type;
|
use PHPStan\Type\Type;
|
||||||
@ -22,14 +24,17 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class TypedPropertyFromToOneRelationTypeRector extends \Rector\Core\Rector\AbstractRector
|
final class TypedPropertyFromToOneRelationTypeRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\TypeDeclaration\NodeTypeAnalyzer\PropertyTypeDecorator
|
* @var \Rector\TypeDeclaration\NodeTypeAnalyzer\PropertyTypeDecorator
|
||||||
*/
|
*/
|
||||||
private $propertyTypeDecorator;
|
private $propertyTypeDecorator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
|
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger
|
||||||
*/
|
*/
|
||||||
private $phpDocTypeChanger;
|
private $phpDocTypeChanger;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\NodeManipulator\ToOneRelationPropertyTypeResolver
|
* @var \Rector\Doctrine\NodeManipulator\ToOneRelationPropertyTypeResolver
|
||||||
*/
|
*/
|
||||||
private $toOneRelationPropertyTypeResolver;
|
private $toOneRelationPropertyTypeResolver;
|
||||||
@ -82,23 +87,33 @@ CODE_SAMPLE
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$propertyType = $this->toOneRelationPropertyTypeResolver->resolve($node);
|
$propertyType = $this->toOneRelationPropertyTypeResolver->resolve($node);
|
||||||
if (!$propertyType instanceof \PHPStan\Type\Type || $propertyType instanceof \PHPStan\Type\MixedType) {
|
if (!$propertyType instanceof \PHPStan\Type\Type) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ($propertyType instanceof \PHPStan\Type\MixedType) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$typeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($propertyType, \Rector\PHPStanStaticTypeMapper\Enum\TypeKind::PROPERTY());
|
$typeNode = $this->staticTypeMapper->mapPHPStanTypeToPhpParserNode($propertyType, \Rector\PHPStanStaticTypeMapper\Enum\TypeKind::PROPERTY());
|
||||||
if ($typeNode === null) {
|
if ($typeNode === null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
|
$this->completePropertyTypeOrVarDoc($propertyType, $typeNode, $node);
|
||||||
if ($this->phpVersionProvider->isAtLeastPhpVersion(\Rector\Core\ValueObject\PhpVersion::PHP_74)) {
|
|
||||||
if ($propertyType instanceof \PHPStan\Type\UnionType) {
|
|
||||||
$this->propertyTypeDecorator->decoratePropertyUnionType($propertyType, $typeNode, $node, $phpDocInfo);
|
|
||||||
return $node;
|
|
||||||
}
|
|
||||||
$node->type = $typeNode;
|
|
||||||
return $node;
|
|
||||||
}
|
|
||||||
$this->phpDocTypeChanger->changeVarType($phpDocInfo, $propertyType);
|
|
||||||
return $node;
|
return $node;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @param \PhpParser\Node\ComplexType|\PhpParser\Node\Name $typeNode
|
||||||
|
*/
|
||||||
|
private function completePropertyTypeOrVarDoc(\PHPStan\Type\Type $propertyType, $typeNode, \PhpParser\Node\Stmt\Property $property) : void
|
||||||
|
{
|
||||||
|
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
|
||||||
|
if ($this->phpVersionProvider->isAtLeastPhpVersion(\Rector\Core\ValueObject\PhpVersion::PHP_74)) {
|
||||||
|
if ($propertyType instanceof \PHPStan\Type\UnionType) {
|
||||||
|
$this->propertyTypeDecorator->decoratePropertyUnionType($propertyType, $typeNode, $property, $phpDocInfo);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$property->type = $typeNode;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$this->phpDocTypeChanger->changeVarType($phpDocInfo, $propertyType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
|
|||||||
final class RepositoryTypeFactory
|
final class RepositoryTypeFactory
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
|
@ -18,14 +18,17 @@ use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
|
|||||||
final class CollectionTypeResolver
|
final class CollectionTypeResolver
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\StaticTypeMapper\Naming\NameScopeFactory
|
* @var \Rector\StaticTypeMapper\Naming\NameScopeFactory
|
||||||
*/
|
*/
|
||||||
private $nameScopeFactory;
|
private $nameScopeFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
||||||
*/
|
*/
|
||||||
private $phpDocInfoFactory;
|
private $phpDocInfoFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Doctrine\PhpDoc\ShortClassExpander
|
* @var \Rector\Doctrine\PhpDoc\ShortClassExpander
|
||||||
*/
|
*/
|
||||||
private $shortClassExpander;
|
private $shortClassExpander;
|
||||||
|
@ -9,6 +9,7 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
|
|||||||
final class CollectionVarTagValueNodeResolver
|
final class CollectionVarTagValueNodeResolver
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
|
||||||
*/
|
*/
|
||||||
private $phpDocInfoFactory;
|
private $phpDocInfoFactory;
|
||||||
|
20
vendor/rector/rector-doctrine/src/ValueObject/ArgName.php
vendored
Normal file
20
vendor/rector/rector-doctrine/src/ValueObject/ArgName.php
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare (strict_types=1);
|
||||||
|
namespace Rector\Doctrine\ValueObject;
|
||||||
|
|
||||||
|
final class ArgName
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public const FETCH = 'fetch';
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public const LAZY = 'LAZY';
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public const ORPHAN_REMOVAL = 'orphanRemoval';
|
||||||
|
}
|
@ -8,14 +8,17 @@ use PhpParser\Node\Expr\PropertyFetch;
|
|||||||
final class AssignToPropertyFetch
|
final class AssignToPropertyFetch
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \PhpParser\Node\Expr\Assign
|
* @var \PhpParser\Node\Expr\Assign
|
||||||
*/
|
*/
|
||||||
private $assign;
|
private $assign;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \PhpParser\Node\Expr\PropertyFetch
|
* @var \PhpParser\Node\Expr\PropertyFetch
|
||||||
*/
|
*/
|
||||||
private $propertyFetch;
|
private $propertyFetch;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
private $propertyName;
|
private $propertyName;
|
||||||
|
47
vendor/rector/rector-doctrine/src/ValueObject/DefaultAnnotationArgValue.php
vendored
Normal file
47
vendor/rector/rector-doctrine/src/ValueObject/DefaultAnnotationArgValue.php
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare (strict_types=1);
|
||||||
|
namespace Rector\Doctrine\ValueObject;
|
||||||
|
|
||||||
|
final class DefaultAnnotationArgValue
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $annotationClass;
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $argName;
|
||||||
|
/**
|
||||||
|
* @readonly
|
||||||
|
* @var bool|int|string
|
||||||
|
*/
|
||||||
|
private $defaultValue;
|
||||||
|
/**
|
||||||
|
* @param bool|int|string $defaultValue
|
||||||
|
*/
|
||||||
|
public function __construct(string $annotationClass, string $argName, $defaultValue)
|
||||||
|
{
|
||||||
|
$this->annotationClass = $annotationClass;
|
||||||
|
$this->argName = $argName;
|
||||||
|
$this->defaultValue = $defaultValue;
|
||||||
|
}
|
||||||
|
public function getAnnotationClass() : string
|
||||||
|
{
|
||||||
|
return $this->annotationClass;
|
||||||
|
}
|
||||||
|
public function getArgName() : string
|
||||||
|
{
|
||||||
|
return $this->argName;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @return bool|int|string
|
||||||
|
*/
|
||||||
|
public function getDefaultValue()
|
||||||
|
{
|
||||||
|
return $this->defaultValue;
|
||||||
|
}
|
||||||
|
}
|
@ -7,10 +7,12 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
|
|||||||
final class PropertyNameAndPhpDocInfo
|
final class PropertyNameAndPhpDocInfo
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
private $propertyName;
|
private $propertyName;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo
|
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo
|
||||||
*/
|
*/
|
||||||
private $phpDocInfos;
|
private $phpDocInfos;
|
||||||
|
@ -8,6 +8,7 @@ final class PropertyNamesAndPhpDocInfos
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var PropertyNameAndPhpDocInfo[]
|
* @var PropertyNameAndPhpDocInfo[]
|
||||||
|
* @readonly
|
||||||
*/
|
*/
|
||||||
private $propertyNameAndPhpDocInfos;
|
private $propertyNameAndPhpDocInfos;
|
||||||
/**
|
/**
|
||||||
|
2
vendor/rector/rector-nette/rector.php
vendored
2
vendor/rector/rector-nette/rector.php
vendored
@ -21,7 +21,7 @@ return static function (\Symfony\Component\DependencyInjection\Loader\Configurat
|
|||||||
$services->set(\Rector\Php55\Rector\String_\StringClassNameToClassConstantRector::class)->configure(['Nette\\*', 'Symfony\\Component\\Translation\\TranslatorInterface', 'Symfony\\Contracts\\EventDispatcher\\Event', 'Kdyby\\Events\\Subscriber']);
|
$services->set(\Rector\Php55\Rector\String_\StringClassNameToClassConstantRector::class)->configure(['Nette\\*', 'Symfony\\Component\\Translation\\TranslatorInterface', 'Symfony\\Contracts\\EventDispatcher\\Event', 'Kdyby\\Events\\Subscriber']);
|
||||||
// needed for DEAD_CODE list, just in split package like this
|
// needed for DEAD_CODE list, just in split package like this
|
||||||
$containerConfigurator->import(__DIR__ . '/config/config.php');
|
$containerConfigurator->import(__DIR__ . '/config/config.php');
|
||||||
$containerConfigurator->import(\Rector\Set\ValueObject\LevelSetList::UP_TO_PHP_80);
|
$containerConfigurator->import(\Rector\Set\ValueObject\LevelSetList::UP_TO_PHP_81);
|
||||||
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::DEAD_CODE);
|
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::DEAD_CODE);
|
||||||
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::CODE_QUALITY);
|
$containerConfigurator->import(\Rector\Set\ValueObject\SetList::CODE_QUALITY);
|
||||||
};
|
};
|
||||||
|
@ -15,9 +15,11 @@ final class LatteFileProcessor implements \Rector\Core\Contract\Processor\FilePr
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var LatteRectorInterface[]
|
* @var LatteRectorInterface[]
|
||||||
|
* @readonly
|
||||||
*/
|
*/
|
||||||
private $latteRectors;
|
private $latteRectors;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\ChangesReporting\ValueObjectFactory\FileDiffFactory
|
* @var \Rector\ChangesReporting\ValueObjectFactory\FileDiffFactory
|
||||||
*/
|
*/
|
||||||
private $fileDiffFactory;
|
private $fileDiffFactory;
|
||||||
|
@ -17,22 +17,27 @@ use Rector\Parallel\ValueObject\Bridge;
|
|||||||
final class NeonFileProcessor implements \Rector\Core\Contract\Processor\FileProcessorInterface
|
final class NeonFileProcessor implements \Rector\Core\Contract\Processor\FileProcessorInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\NeonParser\NeonParser
|
* @var \Rector\Nette\NeonParser\NeonParser
|
||||||
*/
|
*/
|
||||||
private $neonParser;
|
private $neonParser;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\NeonParser\NeonNodeTraverserFactory
|
* @var \Rector\Nette\NeonParser\NeonNodeTraverserFactory
|
||||||
*/
|
*/
|
||||||
private $neonNodeTraverserFactory;
|
private $neonNodeTraverserFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\NeonParser\Printer\FormatPreservingNeonPrinter
|
* @var \Rector\Nette\NeonParser\Printer\FormatPreservingNeonPrinter
|
||||||
*/
|
*/
|
||||||
private $formatPreservingNeonPrinter;
|
private $formatPreservingNeonPrinter;
|
||||||
/**
|
/**
|
||||||
* @var NeonRectorInterface[]
|
* @var NeonRectorInterface[]
|
||||||
|
* @readonly
|
||||||
*/
|
*/
|
||||||
private $neonRectors;
|
private $neonRectors;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\ChangesReporting\ValueObjectFactory\FileDiffFactory
|
* @var \Rector\ChangesReporting\ValueObjectFactory\FileDiffFactory
|
||||||
*/
|
*/
|
||||||
private $fileDiffFactory;
|
private $fileDiffFactory;
|
||||||
|
@ -16,22 +16,27 @@ use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer;
|
|||||||
final class ArrayDimFetchControlTypeResolver implements \Rector\Nette\Contract\FormControlTypeResolverInterface
|
final class ArrayDimFetchControlTypeResolver implements \Rector\Nette\Contract\FormControlTypeResolverInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\NodeAnalyzer\ControlDimFetchAnalyzer
|
* @var \Rector\Nette\NodeAnalyzer\ControlDimFetchAnalyzer
|
||||||
*/
|
*/
|
||||||
private $controlDimFetchAnalyzer;
|
private $controlDimFetchAnalyzer;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\Naming\NetteControlNaming
|
* @var \Rector\Nette\Naming\NetteControlNaming
|
||||||
*/
|
*/
|
||||||
private $netteControlNaming;
|
private $netteControlNaming;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer
|
* @var \Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer
|
||||||
*/
|
*/
|
||||||
private $returnTypeInferer;
|
private $returnTypeInferer;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\AstResolver
|
* @var \Rector\Core\PhpParser\AstResolver
|
||||||
*/
|
*/
|
||||||
private $astResolver;
|
private $astResolver;
|
||||||
|
@ -14,10 +14,12 @@ use Rector\NodeTypeResolver\NodeTypeResolver;
|
|||||||
final class AssignDimFetchFormTypeResolver implements \Rector\Nette\Contract\FormControlTypeResolverInterface
|
final class AssignDimFetchFormTypeResolver implements \Rector\Nette\Contract\FormControlTypeResolverInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
|
@ -17,6 +17,7 @@ final class AssignedVariablesMethodCallsFormTypeResolver implements \Rector\Nett
|
|||||||
*/
|
*/
|
||||||
private $methodNamesByInputNamesResolver;
|
private $methodNamesByInputNamesResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
|
@ -20,10 +20,12 @@ final class ClassMethodFormTypeResolver implements \Rector\Nette\Contract\FormCo
|
|||||||
*/
|
*/
|
||||||
private $methodNamesByInputNamesResolver;
|
private $methodNamesByInputNamesResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
|
@ -19,10 +19,12 @@ final class ConstructorFormControlTypeResolver implements \Rector\Nette\Contract
|
|||||||
*/
|
*/
|
||||||
private $methodNamesByInputNamesResolver;
|
private $methodNamesByInputNamesResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
|
@ -23,18 +23,22 @@ final class GetComponentMethodCallFormControlTypeResolver implements \Rector\Net
|
|||||||
*/
|
*/
|
||||||
private $methodNamesByInputNamesResolver;
|
private $methodNamesByInputNamesResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
||||||
*/
|
*/
|
||||||
private $valueResolver;
|
private $valueResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\AstResolver
|
* @var \Rector\Core\PhpParser\AstResolver
|
||||||
*/
|
*/
|
||||||
private $astResolver;
|
private $astResolver;
|
||||||
|
@ -24,18 +24,22 @@ final class MagicNetteFactoryInterfaceFormControlTypeResolver implements \Rector
|
|||||||
*/
|
*/
|
||||||
private $methodNamesByInputNamesResolver;
|
private $methodNamesByInputNamesResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \PHPStan\Reflection\ReflectionProvider
|
* @var \PHPStan\Reflection\ReflectionProvider
|
||||||
*/
|
*/
|
||||||
private $reflectionProvider;
|
private $reflectionProvider;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\AstResolver
|
* @var \Rector\Core\PhpParser\AstResolver
|
||||||
*/
|
*/
|
||||||
private $astResolver;
|
private $astResolver;
|
||||||
|
@ -19,10 +19,12 @@ final class NewFormControlTypeResolver implements \Rector\Nette\Contract\FormCon
|
|||||||
*/
|
*/
|
||||||
private $methodNamesByInputNamesResolver;
|
private $methodNamesByInputNamesResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\AstResolver
|
* @var \Rector\Core\PhpParser\AstResolver
|
||||||
*/
|
*/
|
||||||
private $astResolver;
|
private $astResolver;
|
||||||
|
@ -14,14 +14,17 @@ use Rector\NodeNameResolver\NodeNameResolver;
|
|||||||
final class OnVariableMethodCallsFormControlTypeResolver implements \Rector\Nette\Contract\FormControlTypeResolverInterface
|
final class OnVariableMethodCallsFormControlTypeResolver implements \Rector\Nette\Contract\FormControlTypeResolverInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\NodeAnalyzer\MethodCallManipulator
|
* @var \Rector\Nette\NodeAnalyzer\MethodCallManipulator
|
||||||
*/
|
*/
|
||||||
private $methodCallManipulator;
|
private $methodCallManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
||||||
*/
|
*/
|
||||||
private $valueResolver;
|
private $valueResolver;
|
||||||
|
@ -18,6 +18,7 @@ final class ReturnFormControlTypeResolver implements \Rector\Nette\Contract\Form
|
|||||||
*/
|
*/
|
||||||
private $methodNamesByInputNamesResolver;
|
private $methodNamesByInputNamesResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
|
@ -20,10 +20,12 @@ final class ThisVariableInAnotherMethodFormControlTypeResolver implements \Recto
|
|||||||
*/
|
*/
|
||||||
private $methodNamesByInputNamesResolver;
|
private $methodNamesByInputNamesResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
|
@ -22,18 +22,22 @@ final class VariableConstructorFormControlTypeResolver implements \Rector\Nette\
|
|||||||
*/
|
*/
|
||||||
private $methodNamesByInputNamesResolver;
|
private $methodNamesByInputNamesResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \PHPStan\Reflection\ReflectionProvider
|
* @var \PHPStan\Reflection\ReflectionProvider
|
||||||
*/
|
*/
|
||||||
private $reflectionProvider;
|
private $reflectionProvider;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\AstResolver
|
* @var \Rector\Core\PhpParser\AstResolver
|
||||||
*/
|
*/
|
||||||
private $astResolver;
|
private $astResolver;
|
||||||
|
@ -15,14 +15,17 @@ use Rector\StaticTypeMapper\StaticTypeMapper;
|
|||||||
final class VariableWithTypesFactory
|
final class VariableWithTypesFactory
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\StaticTypeMapper\StaticTypeMapper
|
* @var \Rector\StaticTypeMapper\StaticTypeMapper
|
||||||
*/
|
*/
|
||||||
private $staticTypeMapper;
|
private $staticTypeMapper;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Naming\Naming\VariableNaming
|
* @var \Rector\Naming\Naming\VariableNaming
|
||||||
*/
|
*/
|
||||||
private $variableNaming;
|
private $variableNaming;
|
||||||
|
@ -36,14 +36,17 @@ final class ContributeEventClassResolver
|
|||||||
'Contributte\\Events\\Extra\\Event\\Latte\\TemplateCreateEvent' => ['Nette\\Bridges\\ApplicationLatte\\Template' => 'getTemplate'],
|
'Contributte\\Events\\Extra\\Event\\Latte\\TemplateCreateEvent' => ['Nette\\Bridges\\ApplicationLatte\\Template' => 'getTemplate'],
|
||||||
];
|
];
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\StaticTypeMapper\StaticTypeMapper
|
* @var \Rector\StaticTypeMapper\StaticTypeMapper
|
||||||
*/
|
*/
|
||||||
private $staticTypeMapper;
|
private $staticTypeMapper;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Naming\Naming\VariableNaming
|
* @var \Rector\Naming\Naming\VariableNaming
|
||||||
*/
|
*/
|
||||||
private $variableNaming;
|
private $variableNaming;
|
||||||
@ -85,11 +88,7 @@ final class ContributeEventClassResolver
|
|||||||
}
|
}
|
||||||
private function resolveParamType(?\PhpParser\Node\Identifier $identifier, \PhpParser\Node\Param $param) : string
|
private function resolveParamType(?\PhpParser\Node\Identifier $identifier, \PhpParser\Node\Param $param) : string
|
||||||
{
|
{
|
||||||
if ($identifier === null) {
|
$staticType = $identifier === null ? new \PHPStan\Type\MixedType() : $this->staticTypeMapper->mapPhpParserNodePHPStanType($identifier);
|
||||||
$staticType = new \PHPStan\Type\MixedType();
|
|
||||||
} else {
|
|
||||||
$staticType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($identifier);
|
|
||||||
}
|
|
||||||
return $this->createGetterFromParamAndStaticType($param, $staticType);
|
return $this->createGetterFromParamAndStaticType($param, $staticType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,10 +14,12 @@ final class EventClassNaming
|
|||||||
*/
|
*/
|
||||||
private const EVENT = 'Event';
|
private const EVENT = 'Event';
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\CodingStyle\Naming\ClassNaming
|
* @var \Rector\CodingStyle\Naming\ClassNaming
|
||||||
*/
|
*/
|
||||||
private $classNaming;
|
private $classNaming;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
|
@ -12,14 +12,17 @@ use Rector\NodeTypeResolver\NodeTypeResolver;
|
|||||||
final class GetSubscribedEventsClassMethodAnalyzer
|
final class GetSubscribedEventsClassMethodAnalyzer
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
|
@ -29,18 +29,22 @@ use RectorPrefix20220117\Symplify\Astral\ValueObject\NodeBuilder\NamespaceBuilde
|
|||||||
final class EventValueObjectClassFactory
|
final class EventValueObjectClassFactory
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\CodingStyle\Naming\ClassNaming
|
* @var \Rector\CodingStyle\Naming\ClassNaming
|
||||||
*/
|
*/
|
||||||
private $classNaming;
|
private $classNaming;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\NodeFactory
|
* @var \Rector\Core\PhpParser\Node\NodeFactory
|
||||||
*/
|
*/
|
||||||
private $nodeFactory;
|
private $nodeFactory;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\Kdyby\BlueprintFactory\VariableWithTypesFactory
|
* @var \Rector\Nette\Kdyby\BlueprintFactory\VariableWithTypesFactory
|
||||||
*/
|
*/
|
||||||
private $variableWithTypesFactory;
|
private $variableWithTypesFactory;
|
||||||
|
@ -14,10 +14,12 @@ use RectorPrefix20220117\Symplify\Astral\NodeTraverser\SimpleCallableNodeTravers
|
|||||||
final class GetSubscribedEventsArrayManipulator
|
final class GetSubscribedEventsArrayManipulator
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
|
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
|
||||||
*/
|
*/
|
||||||
private $simpleCallableNodeTraverser;
|
private $simpleCallableNodeTraverser;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
||||||
*/
|
*/
|
||||||
private $valueResolver;
|
private $valueResolver;
|
||||||
|
@ -21,14 +21,17 @@ final class ListeningClassMethodArgumentManipulator
|
|||||||
*/
|
*/
|
||||||
private const EVENT_PARAMETER_REPLACED = 'event_parameter_replaced';
|
private const EVENT_PARAMETER_REPLACED = 'event_parameter_replaced';
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\CodingStyle\Naming\ClassNaming
|
* @var \Rector\CodingStyle\Naming\ClassNaming
|
||||||
*/
|
*/
|
||||||
private $classNaming;
|
private $classNaming;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\Kdyby\ContributeEventClassResolver
|
* @var \Rector\Nette\Kdyby\ContributeEventClassResolver
|
||||||
*/
|
*/
|
||||||
private $contributeEventClassResolver;
|
private $contributeEventClassResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\NodeAnalyzer\ParamAnalyzer
|
* @var \Rector\Core\NodeAnalyzer\ParamAnalyzer
|
||||||
*/
|
*/
|
||||||
private $paramAnalyzer;
|
private $paramAnalyzer;
|
||||||
|
@ -30,18 +30,22 @@ final class ListeningMethodsCollector
|
|||||||
*/
|
*/
|
||||||
private $eventClassesAndClassMethods = [];
|
private $eventClassesAndClassMethods = [];
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
|
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
|
||||||
*/
|
*/
|
||||||
private $simpleCallableNodeTraverser;
|
private $simpleCallableNodeTraverser;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\Kdyby\Naming\EventClassNaming
|
* @var \Rector\Nette\Kdyby\Naming\EventClassNaming
|
||||||
*/
|
*/
|
||||||
private $eventClassNaming;
|
private $eventClassNaming;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
|
||||||
*/
|
*/
|
||||||
private $valueResolver;
|
private $valueResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
|
@ -26,22 +26,27 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class ChangeNetteEventNamesInGetSubscribedEventsRector extends \Rector\Core\Rector\AbstractRector
|
final class ChangeNetteEventNamesInGetSubscribedEventsRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\Kdyby\NodeManipulator\GetSubscribedEventsArrayManipulator
|
* @var \Rector\Nette\Kdyby\NodeManipulator\GetSubscribedEventsArrayManipulator
|
||||||
*/
|
*/
|
||||||
private $getSubscribedEventsArrayManipulator;
|
private $getSubscribedEventsArrayManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\Kdyby\NodeManipulator\ListeningClassMethodArgumentManipulator
|
* @var \Rector\Nette\Kdyby\NodeManipulator\ListeningClassMethodArgumentManipulator
|
||||||
*/
|
*/
|
||||||
private $listeningClassMethodArgumentManipulator;
|
private $listeningClassMethodArgumentManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\Kdyby\NodeResolver\ListeningMethodsCollector
|
* @var \Rector\Nette\Kdyby\NodeResolver\ListeningMethodsCollector
|
||||||
*/
|
*/
|
||||||
private $listeningMethodsCollector;
|
private $listeningMethodsCollector;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\Kdyby\NodeAnalyzer\GetSubscribedEventsClassMethodAnalyzer
|
* @var \Rector\Nette\Kdyby\NodeAnalyzer\GetSubscribedEventsClassMethodAnalyzer
|
||||||
*/
|
*/
|
||||||
private $getSubscribedEventsClassMethodAnalyzer;
|
private $getSubscribedEventsClassMethodAnalyzer;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Privatization\NodeManipulator\VisibilityManipulator
|
* @var \Rector\Privatization\NodeManipulator\VisibilityManipulator
|
||||||
*/
|
*/
|
||||||
private $visibilityManipulator;
|
private $visibilityManipulator;
|
||||||
|
@ -24,10 +24,12 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
|||||||
final class ReplaceEventManagerWithEventSubscriberRector extends \Rector\Core\Rector\AbstractRector
|
final class ReplaceEventManagerWithEventSubscriberRector extends \Rector\Core\Rector\AbstractRector
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\Kdyby\Naming\EventClassNaming
|
* @var \Rector\Nette\Kdyby\Naming\EventClassNaming
|
||||||
*/
|
*/
|
||||||
private $eventClassNaming;
|
private $eventClassNaming;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\Kdyby\NodeFactory\EventValueObjectClassFactory
|
* @var \Rector\Nette\Kdyby\NodeFactory\EventValueObjectClassFactory
|
||||||
*/
|
*/
|
||||||
private $eventValueObjectClassFactory;
|
private $eventValueObjectClassFactory;
|
||||||
|
@ -7,10 +7,12 @@ use PhpParser\Node\Stmt\ClassMethod;
|
|||||||
final class EventClassAndClassMethod
|
final class EventClassAndClassMethod
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
private $eventClass;
|
private $eventClass;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \PhpParser\Node\Stmt\ClassMethod
|
* @var \PhpParser\Node\Stmt\ClassMethod
|
||||||
*/
|
*/
|
||||||
private $classMethod;
|
private $classMethod;
|
||||||
|
@ -13,10 +13,12 @@ use PHPStan\Type\Type;
|
|||||||
final class VariableWithType
|
final class VariableWithType
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
private $name;
|
private $name;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \PHPStan\Type\Type
|
* @var \PHPStan\Type\Type
|
||||||
*/
|
*/
|
||||||
private $type;
|
private $type;
|
||||||
|
@ -15,10 +15,12 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
|
|||||||
final class FunctionLikeFirstLevelStatementResolver
|
final class FunctionLikeFirstLevelStatementResolver
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNestingScope\ParentScopeFinder
|
* @var \Rector\NodeNestingScope\ParentScopeFinder
|
||||||
*/
|
*/
|
||||||
private $parentScopeFinder;
|
private $parentScopeFinder;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
|
@ -17,10 +17,12 @@ use RectorPrefix20220117\Symplify\Astral\NodeTraverser\SimpleCallableNodeTravers
|
|||||||
final class ArrayDimFetchRenamer
|
final class ArrayDimFetchRenamer
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
|
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
|
||||||
*/
|
*/
|
||||||
private $simpleCallableNodeTraverser;
|
private $simpleCallableNodeTraverser;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Comparing\NodeComparator
|
* @var \Rector\Core\PhpParser\Comparing\NodeComparator
|
||||||
*/
|
*/
|
||||||
private $nodeComparator;
|
private $nodeComparator;
|
||||||
|
@ -21,18 +21,22 @@ final class AssignAnalyzer
|
|||||||
*/
|
*/
|
||||||
private $alreadyInitializedAssignsClassMethodObjectHashes = [];
|
private $alreadyInitializedAssignsClassMethodObjectHashes = [];
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Nette\NodeAdding\FunctionLikeFirstLevelStatementResolver
|
* @var \Rector\Nette\NodeAdding\FunctionLikeFirstLevelStatementResolver
|
||||||
*/
|
*/
|
||||||
private $functionLikeFirstLevelStatementResolver;
|
private $functionLikeFirstLevelStatementResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\PostRector\Collector\NodesToAddCollector
|
* @var \Rector\PostRector\Collector\NodesToAddCollector
|
||||||
*/
|
*/
|
||||||
private $nodesToAddCollector;
|
private $nodesToAddCollector;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\VarAnnotationManipulator
|
* @var \Rector\BetterPhpDocParser\PhpDocManipulator\VarAnnotationManipulator
|
||||||
*/
|
*/
|
||||||
private $varAnnotationManipulator;
|
private $varAnnotationManipulator;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
|
@ -10,6 +10,7 @@ use Rector\NodeNameResolver\NodeNameResolver;
|
|||||||
final class BinaryOpAnalyzer
|
final class BinaryOpAnalyzer
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
|
@ -13,6 +13,7 @@ use Rector\NodeTypeResolver\NodeTypeResolver;
|
|||||||
final class ControlDimFetchAnalyzer
|
final class ControlDimFetchAnalyzer
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
|
@ -17,14 +17,17 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
|
|||||||
final class MethodCallManipulator
|
final class MethodCallManipulator
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeNameResolver\NodeNameResolver
|
* @var \Rector\NodeNameResolver\NodeNameResolver
|
||||||
*/
|
*/
|
||||||
private $nodeNameResolver;
|
private $nodeNameResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Defluent\NodeAnalyzer\FluentChainMethodCallNodeAnalyzer
|
* @var \Rector\Defluent\NodeAnalyzer\FluentChainMethodCallNodeAnalyzer
|
||||||
*/
|
*/
|
||||||
private $fluentChainMethodCallNodeAnalyzer;
|
private $fluentChainMethodCallNodeAnalyzer;
|
||||||
|
@ -11,10 +11,12 @@ use Rector\NodeTypeResolver\NodeTypeResolver;
|
|||||||
final class NetteClassAnalyzer
|
final class NetteClassAnalyzer
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
* @var \Rector\NodeTypeResolver\NodeTypeResolver
|
||||||
*/
|
*/
|
||||||
private $nodeTypeResolver;
|
private $nodeTypeResolver;
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
|
||||||
*/
|
*/
|
||||||
private $betterNodeFinder;
|
private $betterNodeFinder;
|
||||||
@ -25,11 +27,7 @@ final class NetteClassAnalyzer
|
|||||||
}
|
}
|
||||||
public function isInComponent(\PhpParser\Node $node) : bool
|
public function isInComponent(\PhpParser\Node $node) : bool
|
||||||
{
|
{
|
||||||
if ($node instanceof \PhpParser\Node\Stmt\Class_) {
|
$class = $node instanceof \PhpParser\Node\Stmt\Class_ ? $node : $this->betterNodeFinder->findParentType($node, \PhpParser\Node\Stmt\Class_::class);
|
||||||
$class = $node;
|
|
||||||
} else {
|
|
||||||
$class = $this->betterNodeFinder->findParentType($node, \PhpParser\Node\Stmt\Class_::class);
|
|
||||||
}
|
|
||||||
if (!$class instanceof \PhpParser\Node\Stmt\Class_) {
|
if (!$class instanceof \PhpParser\Node\Stmt\Class_) {
|
||||||
return \false;
|
return \false;
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
|
|||||||
final class NetteInjectPropertyAnalyzer
|
final class NetteInjectPropertyAnalyzer
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @readonly
|
||||||
* @var \Rector\FamilyTree\NodeAnalyzer\ClassChildAnalyzer
|
* @var \Rector\FamilyTree\NodeAnalyzer\ClassChildAnalyzer
|
||||||
*/
|
*/
|
||||||
private $classChildAnalyzer;
|
private $classChildAnalyzer;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user