给定类的名称为 $class,以及传递给构造函数的参数是一个数组 $args,我真的可以创建一个新的 $class 实例吗?
可以使用 else-if 链(最多您要支持的最大参数数量)和使用 eval,但这些都不是干净的。理想情况下,我正在寻找只有一两行的东西。
您可以通过使用Reflection来做到这一点。您正在寻找的具体方法是newInstanceArgs
$class = 'YourClass';
$args = array ('a', 'b');
$reflection = new \ReflectionClass($class);
$classInstance = $reflection->newInstanceArgs($args);
您可以使用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);