47 lines
1.1 KiB
PHP
47 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Tests\Concerns;
|
|
|
|
use ReflectionClass;
|
|
use ReflectionProperty;
|
|
|
|
trait ExtractProperties {
|
|
|
|
/**
|
|
* Extract "a" property from a class.
|
|
*
|
|
* @param \stdClass $class
|
|
* @param string $name Property name.
|
|
* @return array Extracted name and value of property.
|
|
* @throws \ReflectionException
|
|
*/
|
|
function extractProperty($class, $name) {
|
|
|
|
$reflector = new ReflectionClass($class);
|
|
$property = $reflector->getProperty($name);
|
|
$property->setAccessible(true);
|
|
|
|
return [
|
|
"name" => $property->getName(),
|
|
"value" => $property->getValue($class),
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Set property of class.
|
|
*
|
|
* @param \stdClass $class
|
|
* @param string $name Property name
|
|
* @param mixed $value
|
|
* @throws \ReflectionException
|
|
*/
|
|
function setProperty($class, $name, $value = null) {
|
|
|
|
$reflector = new ReflectionClass($class);
|
|
$property = $reflector->getProperty($name);
|
|
$property->setAccessible(true);
|
|
|
|
$property->setValue($class, $value);
|
|
}
|
|
}
|