实例化一个新的类实例时在Python中,你可以打包和解包,像这样的论点:参数打包和解包在PHP
def myfunction(arg1, arg2, arg3):
pass
mydict = dict(arg1='foo', arg2='bar', arg3='baz')
myfunction(**mydict)
mylist = ['foo', 'bar', 'baz']
myfunction(*mylist)
现在,有在PHP中类似的东西?我有一个传递给函数的类,以及从数据库记录中提取的关联数组。我想创建一个类的实例,它接受与数组中的键相同的参数。可以做到吗?
编辑
好了,我肯定没有正确地制定我的问题。我想动态地实例化一个新的类,当我事先不知道类名和参数的数目时。
我已经找到了答案,但:
http://php.net/manual/en/book.reflection.php
这里的解决方案:
class MyClass {
public function __construct($var1, $var2, $var3) {
echo "$var1\n";
echo "$var2\n";
echo "$var3\n";
}
}
$reflector = new ReflectionClass('MyClass');
$args = array('var1'=>'foo', 'var2'=>'baz', 'var3'=>'bar');
$instance = $reflector->newInstanceArgs($args);
这是我过去所做的。只需将数组传递给该函数(只要该函数允许) – Matthew 2010-12-11 14:42:50