From ea91c99695a8a8108bad4428c7febcf4222a363d Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 9 Aug 2023 09:12:07 +0700 Subject: [PATCH] Reduce private accessor usage on get parent class name not autoload (#4726) * Reduce private accessor usage on get parent class name not autoload * [ci-review] Rector Rectify * [ci-review] Rector Rectify --------- Co-authored-by: GitHub Action --- packages/VendorLocker/ParentClassMethodTypeOverrideGuard.php | 4 +++- rules/Privatization/Guard/ParentPropertyLookupGuard.php | 4 +++- src/PhpParser/Node/Value/ValueResolver.php | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/VendorLocker/ParentClassMethodTypeOverrideGuard.php b/packages/VendorLocker/ParentClassMethodTypeOverrideGuard.php index c336d628f9e..d3adcb6100f 100644 --- a/packages/VendorLocker/ParentClassMethodTypeOverrideGuard.php +++ b/packages/VendorLocker/ParentClassMethodTypeOverrideGuard.php @@ -4,6 +4,7 @@ namespace Rector\VendorLocker; +use PHPStan\BetterReflection\Reflection\ReflectionClass; use PhpParser\Node\Stmt\ClassMethod; use PHPStan\Reflection\ClassReflection; use PHPStan\Reflection\MethodReflection; @@ -107,7 +108,8 @@ private function hasClassParent(ClassReflection $classReflection): bool $nativeReflection, 'betterReflectionClass' ); - $parentClassName = $this->privatesAccessor->getPrivateProperty($betterReflectionClass, 'parentClassName'); + /** @var ReflectionClass $betterReflectionClass */ + $parentClassName = $betterReflectionClass->getParentClassName(); return $parentClassName !== null; } } diff --git a/rules/Privatization/Guard/ParentPropertyLookupGuard.php b/rules/Privatization/Guard/ParentPropertyLookupGuard.php index 6b549499bd3..6233451ace1 100644 --- a/rules/Privatization/Guard/ParentPropertyLookupGuard.php +++ b/rules/Privatization/Guard/ParentPropertyLookupGuard.php @@ -4,6 +4,7 @@ namespace Rector\Privatization\Guard; +use PHPStan\BetterReflection\Reflection\ReflectionClass; use PhpParser\Node; use PhpParser\Node\Expr\PropertyFetch; use PhpParser\Node\Expr\StaticPropertyFetch; @@ -53,7 +54,8 @@ public function isLegal(Property $property, ?ClassReflection $classReflection): $nativeReflection, 'betterReflectionClass' ); - $parentClassName = $this->privatesAccessor->getPrivateProperty($betterReflectionClass, 'parentClassName'); + /** @var ReflectionClass $betterReflectionClass */ + $parentClassName = $betterReflectionClass->getParentClassName(); if ($parentClassName === null) { return true; diff --git a/src/PhpParser/Node/Value/ValueResolver.php b/src/PhpParser/Node/Value/ValueResolver.php index d10bcdded66..b47212fb3c8 100644 --- a/src/PhpParser/Node/Value/ValueResolver.php +++ b/src/PhpParser/Node/Value/ValueResolver.php @@ -4,6 +4,7 @@ namespace Rector\Core\PhpParser\Node\Value; +use PHPStan\BetterReflection\Reflection\ReflectionClass; use PhpParser\ConstExprEvaluationException; use PhpParser\ConstExprEvaluator; use PhpParser\Node\Expr; @@ -340,7 +341,8 @@ private function resolveClassFromSelfStaticParent(ClassConstFetch $classConstFet $nativeReflection, 'betterReflectionClass' ); - $parentClassName = $this->privatesAccessor->getPrivateProperty($betterReflectionClass, 'parentClassName'); + /** @var ReflectionClass $betterReflectionClass */ + $parentClassName = $betterReflectionClass->getParentClassName(); if ($parentClassName === null) { throw new ShouldNotHappenException();