|
12 | 12 | use PhpParser\Node\Expr\StaticPropertyFetch; |
13 | 13 | use PhpParser\Node\Expr\Variable; |
14 | 14 | use PhpParser\Node\Stmt\Class_; |
15 | | -use PHPStan\Type\ObjectType; |
16 | 15 | use Rector\NodeNameResolver\NodeNameResolver; |
17 | 16 | use Rector\NodeTypeResolver\Node\AttributeKey; |
18 | | -use Rector\NodeTypeResolver\NodeTypeResolver; |
19 | 17 | use Rector\PhpParser\Node\BetterNodeFinder; |
20 | 18 | final class PropertyWriteonlyAnalyzer |
21 | 19 | { |
22 | 20 | /** |
23 | 21 | * @readonly |
24 | 22 | */ |
25 | 23 | private BetterNodeFinder $betterNodeFinder; |
26 | | - /** |
27 | | - * @readonly |
28 | | - */ |
29 | | - private NodeTypeResolver $nodeTypeResolver; |
30 | 24 | /** |
31 | 25 | * @readonly |
32 | 26 | */ |
33 | 27 | private NodeNameResolver $nodeNameResolver; |
34 | | - public function __construct(BetterNodeFinder $betterNodeFinder, NodeTypeResolver $nodeTypeResolver, NodeNameResolver $nodeNameResolver) |
| 28 | + public function __construct(BetterNodeFinder $betterNodeFinder, NodeNameResolver $nodeNameResolver) |
35 | 29 | { |
36 | 30 | $this->betterNodeFinder = $betterNodeFinder; |
37 | | - $this->nodeTypeResolver = $nodeTypeResolver; |
38 | 31 | $this->nodeNameResolver = $nodeNameResolver; |
39 | 32 | } |
40 | 33 | public function hasClassDynamicPropertyNames(Class_ $class): bool |
41 | 34 | { |
42 | | - $isImplementsJsonSerializable = $this->nodeTypeResolver->isObjectType($class, new ObjectType('JsonSerializable')); |
43 | | - return (bool) $this->betterNodeFinder->findFirst($class, function (Node $node) use ($isImplementsJsonSerializable): bool { |
44 | | - if ($isImplementsJsonSerializable && $node instanceof FuncCall && $this->nodeNameResolver->isName($node, 'get_object_vars') && !$node->isFirstClassCallable()) { |
| 35 | + return (bool) $this->betterNodeFinder->findFirst($class, function (Node $node): bool { |
| 36 | + if ($node instanceof FuncCall && $this->nodeNameResolver->isName($node, 'get_object_vars') && !$node->isFirstClassCallable()) { |
45 | 37 | $firstArg = $node->getArgs()[0] ?? null; |
46 | 38 | if ($firstArg instanceof Arg && $firstArg->value instanceof Variable && $firstArg->value->name === 'this') { |
47 | 39 | return \true; |
|
0 commit comments