實例化一個新的類實例時在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