Backups Created:
/home/japatmex/public_html/wp-content/edit-wolf.php
Savvy
W
olf -
MANAGER
Edit File: WritingToReadOnlyPropertiesRule.php
<?php declare(strict_types = 1); namespace PHPStan\Rules\Properties; use PhpParser\Node; use PHPStan\Analyser\Scope; use PHPStan\Rules\RuleLevelHelper; class WritingToReadOnlyPropertiesRule implements \PHPStan\Rules\Rule { /** @var \PHPStan\Rules\RuleLevelHelper */ private $ruleLevelHelper; /** @var \PHPStan\Rules\Properties\PropertyDescriptor */ private $propertyDescriptor; /** @var \PHPStan\Rules\Properties\PropertyReflectionFinder */ private $propertyReflectionFinder; /** @var bool */ private $checkThisOnly; public function __construct( RuleLevelHelper $ruleLevelHelper, PropertyDescriptor $propertyDescriptor, PropertyReflectionFinder $propertyReflectionFinder, bool $checkThisOnly ) { $this->ruleLevelHelper = $ruleLevelHelper; $this->propertyDescriptor = $propertyDescriptor; $this->propertyReflectionFinder = $propertyReflectionFinder; $this->checkThisOnly = $checkThisOnly; } public function getNodeType(): string { return \PhpParser\Node\Expr::class; } /** * @param \PhpParser\Node\Expr $node * @param \PHPStan\Analyser\Scope $scope * @return string[] */ public function processNode(Node $node, Scope $scope): array { if ( !$node instanceof Node\Expr\Assign && !$node instanceof Node\Expr\AssignOp ) { return []; } if ( !($node->var instanceof Node\Expr\PropertyFetch) && !($node->var instanceof Node\Expr\StaticPropertyFetch) ) { return []; } if ( $node->var instanceof Node\Expr\PropertyFetch && $this->checkThisOnly && !$this->ruleLevelHelper->isThis($node->var->var) ) { return []; } /** @var \PhpParser\Node\Expr\PropertyFetch|\PhpParser\Node\Expr\StaticPropertyFetch $propertyFetch */ $propertyFetch = $node->var; $propertyReflection = $this->propertyReflectionFinder->findPropertyReflectionFromNode($propertyFetch, $scope); if ($propertyReflection === null) { return []; } if (!$scope->canAccessProperty($propertyReflection)) { return []; } if (!$propertyReflection->isWritable()) { $propertyDescription = $this->propertyDescriptor->describeProperty($propertyReflection, $propertyFetch); return [ sprintf( '%s is not writable.', $propertyDescription ), ]; } return []; } }