В Python вы можете упаковывать и распаковывать аргументы следующим образом:
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);