Как создать экземпляр класса Bar с помощью PHP Reflection?
Код класса:
class Bar
{
private $one;
private $two;
public function __construct($one, $two)
{
$this->one = $one;
$this->two = $two;
}
public function get()
{
return ($this->one + $this->two);
}
}
У меня закончились идеи, некоторые мои догадки:
$class = 'Bar';
$constructorArgumentArr = [2,3];
$reflectionMethod = new \ReflectionMethod($class,'__construct');
$object = $reflectionMethod->invokeArgs($class, $constructorArgumentArr);
echo $object->get(); //should echo 5
но это не сработает, так как invokeArgs () требует объект, а не имя класса, поэтому у меня есть случай с куриным яйцом: у меня нет объекта, поэтому я не могу использовать метод конструктора, и мне нужно использовать метод конструктора, чтобы получить предмет.
Я попытался передать ноль как $class
в качестве первого аргумента после логики c, что конструктор вызывается в то время, когда еще нет объекта, но я получил: "ReflectionException: Попытка вызвать non stati c method ... "
Если в Reflection нет решения, я приму любую другую (ie php функция).
Ссылки:
Метод отражения
ReflectionMethod :: invokeArgs