鉴于类的名称为$ class,以及将构造函数传递给数组$ args的参数,我实际上可以创建$ class的新实例吗?
可以使用else-if链(最多可以支持的参数数量)和使用eval,但这些都不是干净的。理想情况下,我正在寻找只有一两行的东西。
答案 0 :(得分:3)
您可以使用Reflection来完成此操作。您正在寻找的方法是newInstanceArgs
$class = 'YourClass';
$args = array ('a', 'b');
$reflection = new \ReflectionClass($class);
$classInstance = $reflection->newInstanceArgs($args);
答案 1 :(得分:1)
您可以使用ReflectionClass执行此操作
$myClass = "NameOfClass"; //Name of class as string
$reflection = new \ReflectionClass($myClass);
$params = array(1,2); //it can be a dynamic array of parameters
$myObject = $reflection->newInstanceArgs($params);