REDROOM
PHP 8.2.31
Path:
Logout
Edit File
Size: 2.72 KB
Close
//opt/cpanel/ea-wappspector/vendor/rector/rector/src/Util/Reflection/PrivatesAccessor.php
Text
Base64
<?php declare (strict_types=1); namespace Rector\Util\Reflection; use Rector\Exception\Reflection\MissingPrivatePropertyException; use ReflectionClass; use ReflectionMethod; use ReflectionProperty; /** * @see \Rector\Tests\Util\Reflection\PrivatesAccessorTest */ final class PrivatesAccessor { /** * @param callable(mixed $value): mixed $closure */ public function propertyClosure(object $object, string $propertyName, callable $closure) : void { $property = $this->getPrivateProperty($object, $propertyName); // modify value $property = $closure($property); $this->setPrivateProperty($object, $propertyName, $property); } /** * @param object|class-string $object * @param mixed[] $arguments * @api * @return mixed */ public function callPrivateMethod($object, string $methodName, array $arguments) { if (\is_string($object)) { $reflectionClass = new ReflectionClass($object); $object = $reflectionClass->newInstanceWithoutConstructor(); } $reflectionMethod = $this->createAccessibleMethodReflection($object, $methodName); return $reflectionMethod->invokeArgs($object, $arguments); } /** * @return mixed */ public function getPrivateProperty(object $object, string $propertyName) { $reflectionProperty = $this->resolvePropertyReflection($object, $propertyName); $reflectionProperty->setAccessible(\true); return $reflectionProperty->getValue($object); } /** * @param mixed $value */ public function setPrivateProperty(object $object, string $propertyName, $value) : void { $reflectionProperty = $this->resolvePropertyReflection($object, $propertyName); $reflectionProperty->setAccessible(\true); $reflectionProperty->setValue($object, $value); } private function createAccessibleMethodReflection(object $object, string $methodName) : ReflectionMethod { $reflectionMethod = new ReflectionMethod($object, $methodName); $reflectionMethod->setAccessible(\true); return $reflectionMethod; } private function resolvePropertyReflection(object $object, string $propertyName) : ReflectionProperty { if (\property_exists($object, $propertyName)) { return new ReflectionProperty($object, $propertyName); } $parentClass = \get_parent_class($object); if ($parentClass !== \false) { return new ReflectionProperty($parentClass, $propertyName); } $errorMessage = \sprintf('Property "$%s" was not found in "%s" class', $propertyName, \get_class($object)); throw new MissingPrivatePropertyException($errorMessage); } }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 1
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
PrivatesAccessor.php
2.72 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).