Skip to content

Commit 415cc1a

Browse files
committed
Updated Rector to commit 6d046c1cc2f3a38d21c6dd1bc160f47291f1a981
rectorphp/rector-src@6d046c1 [Php81] added `RemoveReflectionSetAccessibleCallsRector` (#7085)
1 parent 0021d18 commit 415cc1a

14 files changed

Lines changed: 143 additions & 30 deletions

File tree

config/set/php81.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@
99
use Rector\Php81\Rector\Class_\SpatieEnumClassToEnumRector;
1010
use Rector\Php81\Rector\FuncCall\NullToStrictStringFuncCallArgRector;
1111
use Rector\Php81\Rector\MethodCall\MyCLabsMethodCallToEnumConstRector;
12+
use Rector\Php81\Rector\MethodCall\RemoveReflectionSetAccessibleCallsRector;
1213
use Rector\Php81\Rector\MethodCall\SpatieEnumMethodCallToEnumConstRector;
1314
use Rector\Php81\Rector\New_\MyCLabsConstructorCallToEnumFromRector;
1415
use Rector\Php81\Rector\Property\ReadOnlyPropertyRector;
1516
use Rector\TypeDeclaration\Rector\ClassMethod\ReturnNeverTypeRector;
1617
return static function (RectorConfig $rectorConfig) : void {
17-
$rectorConfig->rules([ReturnNeverTypeRector::class, MyCLabsClassToEnumRector::class, MyCLabsMethodCallToEnumConstRector::class, MyCLabsConstructorCallToEnumFromRector::class, ReadOnlyPropertyRector::class, SpatieEnumClassToEnumRector::class, SpatieEnumMethodCallToEnumConstRector::class, NullToStrictStringFuncCallArgRector::class, FirstClassCallableRector::class]);
18+
$rectorConfig->rules([ReturnNeverTypeRector::class, MyCLabsClassToEnumRector::class, MyCLabsMethodCallToEnumConstRector::class, MyCLabsConstructorCallToEnumFromRector::class, ReadOnlyPropertyRector::class, SpatieEnumClassToEnumRector::class, SpatieEnumMethodCallToEnumConstRector::class, NullToStrictStringFuncCallArgRector::class, FirstClassCallableRector::class, RemoveReflectionSetAccessibleCallsRector::class]);
1819
};
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
<?php
2+
3+
declare (strict_types=1);
4+
namespace Rector\Php81\Rector\MethodCall;
5+
6+
use PhpParser\Node;
7+
use PhpParser\Node\Expr\MethodCall;
8+
use PhpParser\Node\Stmt\Expression;
9+
use PhpParser\NodeVisitor;
10+
use PHPStan\Type\ObjectType;
11+
use Rector\Rector\AbstractRector;
12+
use Rector\ValueObject\PhpVersion;
13+
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
14+
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
15+
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
16+
/**
17+
* As of PHP 8.1.0, calling `Reflection*::setAccessible()` has no effect.
18+
*
19+
* @see https://www.php.net/manual/en/reflectionmethod.setaccessible.php
20+
* @see https://www.php.net/manual/en/reflectionproperty.setaccessible.php
21+
* @see \Rector\Tests\Php81\Rector\MethodCall\RemoveReflectionSetAccessibleCallsRector\RemoveReflectionSetAccessibleCallsRectorTest
22+
*/
23+
final class RemoveReflectionSetAccessibleCallsRector extends AbstractRector implements MinPhpVersionInterface
24+
{
25+
/**
26+
* @return array<class-string<Node>>
27+
*/
28+
public function getNodeTypes() : array
29+
{
30+
return [Expression::class];
31+
}
32+
/**
33+
* @param Expression $node
34+
*/
35+
public function refactor(Node $node) : ?int
36+
{
37+
if ($node->expr instanceof MethodCall === \false) {
38+
return null;
39+
}
40+
$methodCall = $node->expr;
41+
if ($this->isName($methodCall->name, 'setAccessible') === \false) {
42+
return null;
43+
}
44+
if ($this->isObjectType($methodCall->var, new ObjectType('ReflectionProperty')) || $this->isObjectType($methodCall->var, new ObjectType('ReflectionMethod'))) {
45+
return NodeVisitor::REMOVE_NODE;
46+
}
47+
return null;
48+
}
49+
public function getRuleDefinition() : RuleDefinition
50+
{
51+
return new RuleDefinition('Remove Reflection::setAccessible() calls', [new CodeSample(<<<'CODE_SAMPLE'
52+
$reflectionProperty = new ReflectionProperty($object, 'property');
53+
$reflectionProperty->setAccessible(true);
54+
$value = $reflectionProperty->getValue($object);
55+
56+
$reflectionMethod = new ReflectionMethod($object, 'method');
57+
$reflectionMethod->setAccessible(false);
58+
$reflectionMethod->invoke($object);
59+
CODE_SAMPLE
60+
, <<<'CODE_SAMPLE'
61+
$reflectionProperty = new ReflectionProperty($object, 'property');
62+
$value = $reflectionProperty->getValue($object);
63+
64+
$reflectionMethod = new ReflectionMethod($object, 'method');
65+
$reflectionMethod->invoke($object);
66+
CODE_SAMPLE
67+
)]);
68+
}
69+
public function provideMinPhpVersion() : int
70+
{
71+
return PhpVersion::PHP_81;
72+
}
73+
}

src/Application/VersionResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ final class VersionResolver
1919
* @api
2020
* @var string
2121
*/
22-
public const PACKAGE_VERSION = 'fe319d74bc9242099c980b8665e50976825edb73';
22+
public const PACKAGE_VERSION = '6d046c1cc2f3a38d21c6dd1bc160f47291f1a981';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2025-07-23 07:06:07';
27+
public const RELEASE_DATE = '2025-07-23 16:21:40';
2828
/**
2929
* @var int
3030
*/

src/Util/Reflection/PrivatesAccessor.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ public function callPrivateMethod($object, string $methodName, array $arguments)
4343
public function getPrivateProperty(object $object, string $propertyName)
4444
{
4545
$reflectionProperty = $this->resolvePropertyReflection($object, $propertyName);
46-
$reflectionProperty->setAccessible(\true);
4746
return $reflectionProperty->getValue($object);
4847
}
4948
/**
@@ -52,23 +51,26 @@ public function getPrivateProperty(object $object, string $propertyName)
5251
public function setPrivateProperty(object $object, string $propertyName, $value) : void
5352
{
5453
$reflectionProperty = $this->resolvePropertyReflection($object, $propertyName);
55-
$reflectionProperty->setAccessible(\true);
5654
$reflectionProperty->setValue($object, $value);
5755
}
5856
private function createAccessibleMethodReflection(object $object, string $methodName) : ReflectionMethod
5957
{
60-
$reflectionMethod = new ReflectionMethod($object, $methodName);
61-
$reflectionMethod->setAccessible(\true);
62-
return $reflectionMethod;
58+
$reflection = new ReflectionMethod($object, $methodName);
59+
$reflection->setAccessible(\true);
60+
return $reflection;
6361
}
6462
private function resolvePropertyReflection(object $object, string $propertyName) : ReflectionProperty
6563
{
6664
if (\property_exists($object, $propertyName)) {
67-
return new ReflectionProperty($object, $propertyName);
65+
$reflection = new ReflectionProperty($object, $propertyName);
66+
$reflection->setAccessible(\true);
67+
return $reflection;
6868
}
6969
$parentClass = \get_parent_class($object);
7070
if ($parentClass !== \false) {
71-
return new ReflectionProperty($parentClass, $propertyName);
71+
$reflection = new ReflectionProperty($parentClass, $propertyName);
72+
$reflection->setAccessible(\true);
73+
return $reflection;
7274
}
7375
$errorMessage = \sprintf('Property "$%s" was not found in "%s" class', $propertyName, \get_class($object));
7476
throw new MissingPrivatePropertyException($errorMessage);

vendor/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2110,6 +2110,7 @@
21102110
'Rector\\Php81\\Rector\\Class_\\SpatieEnumClassToEnumRector' => $baseDir . '/rules/Php81/Rector/Class_/SpatieEnumClassToEnumRector.php',
21112111
'Rector\\Php81\\Rector\\FuncCall\\NullToStrictStringFuncCallArgRector' => $baseDir . '/rules/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector.php',
21122112
'Rector\\Php81\\Rector\\MethodCall\\MyCLabsMethodCallToEnumConstRector' => $baseDir . '/rules/Php81/Rector/MethodCall/MyCLabsMethodCallToEnumConstRector.php',
2113+
'Rector\\Php81\\Rector\\MethodCall\\RemoveReflectionSetAccessibleCallsRector' => $baseDir . '/rules/Php81/Rector/MethodCall/RemoveReflectionSetAccessibleCallsRector.php',
21132114
'Rector\\Php81\\Rector\\MethodCall\\SpatieEnumMethodCallToEnumConstRector' => $baseDir . '/rules/Php81/Rector/MethodCall/SpatieEnumMethodCallToEnumConstRector.php',
21142115
'Rector\\Php81\\Rector\\New_\\MyCLabsConstructorCallToEnumFromRector' => $baseDir . '/rules/Php81/Rector/New_/MyCLabsConstructorCallToEnumFromRector.php',
21152116
'Rector\\Php81\\Rector\\Property\\ReadOnlyPropertyRector' => $baseDir . '/rules/Php81/Rector/Property/ReadOnlyPropertyRector.php',

vendor/composer/autoload_static.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2329,6 +2329,7 @@ class ComposerStaticInit6f11260598dccd26f4238ff29b0c17be
23292329
'Rector\\Php81\\Rector\\Class_\\SpatieEnumClassToEnumRector' => __DIR__ . '/../..' . '/rules/Php81/Rector/Class_/SpatieEnumClassToEnumRector.php',
23302330
'Rector\\Php81\\Rector\\FuncCall\\NullToStrictStringFuncCallArgRector' => __DIR__ . '/../..' . '/rules/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector.php',
23312331
'Rector\\Php81\\Rector\\MethodCall\\MyCLabsMethodCallToEnumConstRector' => __DIR__ . '/../..' . '/rules/Php81/Rector/MethodCall/MyCLabsMethodCallToEnumConstRector.php',
2332+
'Rector\\Php81\\Rector\\MethodCall\\RemoveReflectionSetAccessibleCallsRector' => __DIR__ . '/../..' . '/rules/Php81/Rector/MethodCall/RemoveReflectionSetAccessibleCallsRector.php',
23322333
'Rector\\Php81\\Rector\\MethodCall\\SpatieEnumMethodCallToEnumConstRector' => __DIR__ . '/../..' . '/rules/Php81/Rector/MethodCall/SpatieEnumMethodCallToEnumConstRector.php',
23332334
'Rector\\Php81\\Rector\\New_\\MyCLabsConstructorCallToEnumFromRector' => __DIR__ . '/../..' . '/rules/Php81/Rector/New_/MyCLabsConstructorCallToEnumFromRector.php',
23342335
'Rector\\Php81\\Rector\\Property\\ReadOnlyPropertyRector' => __DIR__ . '/../..' . '/rules/Php81/Rector/Property/ReadOnlyPropertyRector.php',

vendor/composer/installed.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1748,12 +1748,12 @@
17481748
"source": {
17491749
"type": "git",
17501750
"url": "https:\/\/github.com\/rectorphp\/rector-downgrade-php.git",
1751-
"reference": "7c5025bd699496ed841f149ffd981450ba7d33bc"
1751+
"reference": "3ca042a0b6cc60d3ce8e516cd45f82677e1fd843"
17521752
},
17531753
"dist": {
17541754
"type": "zip",
1755-
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-downgrade-php\/zipball\/7c5025bd699496ed841f149ffd981450ba7d33bc",
1756-
"reference": "7c5025bd699496ed841f149ffd981450ba7d33bc",
1755+
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-downgrade-php\/zipball\/3ca042a0b6cc60d3ce8e516cd45f82677e1fd843",
1756+
"reference": "3ca042a0b6cc60d3ce8e516cd45f82677e1fd843",
17571757
"shasum": ""
17581758
},
17591759
"require": {
@@ -1771,7 +1771,7 @@
17711771
"tomasvotruba\/class-leak": "^1.0",
17721772
"tracy\/tracy": "^2.10"
17731773
},
1774-
"time": "2025-07-14T10:15:39+00:00",
1774+
"time": "2025-07-23T09:19:49+00:00",
17751775
"default-branch": true,
17761776
"type": "rector-extension",
17771777
"extra": {

0 commit comments

Comments
 (0)