我有一段代码基本上是在运行中创建类的实例:
$class = 'user';
return new $class;
挑战在于我有一个数组格式的构造函数的参数,并且它们在类之间显然是不同的 - 所以我根本没有任何模式可以做任何事情。那。这里有一些解决方法可以从数组中提取这些参数,并以这样的方式传递它:
$args = array( 'one', 'two' );
// some code to generate $arg1, $arg2, etc.
return new $class( $arg1, $arg2 );
但是,我更喜欢以更聪明的方式做到这一点。据我所知,除非我忘记构造函数并在实例化后初始化它,否则无法使用call_user_func和call_user_func_array。
更新
基本上我正在寻找这样的东西:
return magic_func( 'className', array('one', 'two') );
答案 0 :(得分:5)
return (new ReflectionClass($class))->newInstanceArgs($args);
请参阅http://php.net/manual/en/reflectionclass.newinstanceargs.php