-1

给定类的名称为 $class,以及传递给构造函数的参数是一个数组 $args,我真的可以创建一个新的 $class 实例吗?

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

4

2 回答 2

3

您可以通过使用Reflection来做到这一点。您正在寻找的具体方法是newInstanceArgs

$class = 'YourClass';
$args = array ('a', 'b');

$reflection = new \ReflectionClass($class); 
$classInstance = $reflection->newInstanceArgs($args); 
于 2013-05-17T08:17:41.237 回答
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); 
于 2013-05-17T08:09:37.937 回答