基于字符串创建一个类,并同时传递构造函数参数

时间:2014-02-28 08:39:18

标签: php

我有一段代码基本上是在运行中创建的实例:

$class = 'user';
return new $class;

挑战在于我有一个数组格式的构造函数的参数,并且它们在类之间显然是不同的 - 所以我根本没有任何模式可以做任何事情。那。这里有一些解决方法可以从数组中提取这些参数,并以这样的方式传递它:

$args = array( 'one', 'two' );
// some code to generate $arg1, $arg2, etc.
return new $class( $arg1, $arg2 );

但是,我更喜欢以更聪明的方式做到这一点。据我所知,除非我忘记构造函数并在实例化后初始化它,否则无法使用call_user_funccall_user_func_array

更新

基本上我正在寻找这样的东西:

return magic_func( 'className', array('one', 'two') );

1 个答案:

答案 0 :(得分:5)

return (new ReflectionClass($class))->newInstanceArgs($args);

请参阅http://php.net/manual/en/reflectionclass.newinstanceargs.php