PHP 在创建新对象时传递参数,call_user_func_array对象
2022-08-30 18:08:14
我想动态创建一个PHP对象,参数将是可选的。
例如,与其这样做:”
$test = new Obj($param);
我想做这样的事情(创建新的ob是虚构的):
$test = create_new_obj('Obj', $param);
php中有这样的功能吗?类似于call_user_func_array,但用于对象。
我想动态创建一个PHP对象,参数将是可选的。
例如,与其这样做:”
$test = new Obj($param);
我想做这样的事情(创建新的ob是虚构的):
$test = create_new_obj('Obj', $param);
php中有这样的功能吗?类似于call_user_func_array,但用于对象。
从 PHP 5.6 开始,您现在可以使用新的参数解压缩运算符 (...) 通过一行代码来实现此目的。
下面是一个简单的示例。
$className='Foo';
$args=['arg1','arg2','arg3'];
$newClassInstance=new $className(...$args);
有关详细信息,请参阅 PHP 可变长度参数列表。
由于某些构造函数可能采用可变数量的参数,因此应使用以下方法来容纳它。
$r = new ReflectionClass($strClassName);
$myInstance = $r->newInstanceArgs($arrayOfConstructorArgs);
例如,如果您的构造函数采用 3 个参数Car
$carObj = new Car($color, $engine, $wheels);
然后
$strClassName = 'Car';
$arrayOfConstructorArgs = array($color, $engine, $wheels);
$r = new ReflectionClass($strClassName);
$carObj = $r->newInstanceArgs($arrayOfConstructorArgs);
http://php.net/manual/en/class.reflectionclass.php http://php.net/manual/en/reflectionclass.newinstanceargs.php