使用任意参数调用任意构造函数

时间:2013-05-17 08:02:00

标签: php function

鉴于类的名称为$ class,以及将构造函数传递给数组$ args的参数,我实际上可以创建$ class的新实例吗?

可以使用else-if链(最多可以支持的参数数量)和使用eval,但这些都不是干净的。理想情况下,我正在寻找只有一两行的东西。

2 个答案:

答案 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);