Reflection is available on Packagist.org, just add the dependency to your composer.json.
{
"require" : {
"yep/reflection": "^2.0"
}
}
or run Composer command:
php composer.phar require yep/reflection
<?php
class SomeClass {
private $someProperty;
protected function someMethod($someArgument) {
return $someArgument;
}
public function getSomeProperty() {
return $this->someProperty;
}
public function setSomeProperty($someProperty) {
$this->someProperty = $someProperty;
}
}
class SomeClass2 extends SomeClass {
}
$someClass = new SomeClass();
$reflection = \Yep\Reflection\ReflectionClass::from($class = $someClass);
<?php
$someClass = new SomeClass();
echo $reflection->invokeMethod($method = 'someMethod', $arguments = ['foo']); // 'foo'
<?php
$someClass = new SomeClass();
$reflection->setPropertyValue($property = 'someProperty', $value = 'foo');
echo $someClass->getSomeProperty(); // 'foo'
<?php
$someClass = new SomeClass();
$someClass->setSomeProperty('foo');
echo $reflection->getPropertyValue($property = 'someProperty'); // 'foo';
<?php
$someClass = new SomeClass2();
$someClass->setSomeProperty('foo');
echo $reflection->getParent()->getPropertyValue($property = 'someProperty'); // 'foo';