Я пишу конструкцию в PHP, где синтаксический анализатор определяет, какую функцию вызывать динамически, примерно так:
// The definition of what to call
$function_call_spec = array( "prototype" => "myFunction",
"parameters" => array( "first_par" => "Hello",
"second_par" => "World"));
// Dispatch
$funcPrototype = $function_call_spec["prototype"];
$funcPrototype(); // Here we call function 'myFunction'.
Это все прекрасно и денди. Но теперь наступает следующий шаг, передавая параметры, которые я действительно не знаю, возможно ли так, как я хочу это сделать. Однако меня не перестает удивлять то, что языки сценариев могут делать в наши дни, так что здесь:
Можно передать параметры функции следующим образом:
// Here we call function 'myFunction' with the array of parameters.
$funcPrototype( $function_call_spec["parameters"] );
Однако я хочу правильно объявить «myFunction» с понятными аргументами и т. Д .:
function myFunction( $first_par, $second_par )
{
}
Затем возникает вопрос: есть ли способ динамически передавать параметры в функцию, просто просматривая массив параметров?
Чтобы уточнить, я не хочу сделать это так:
$funcPrototype( $function_call_spec["parameters"]["first_par"],
$function_call_spec["parameters"]["second_par"] );
Потому что для этого требуется, чтобы мой код статически знал подробности о myFunction, что противоречит самой идее.
Вместо этого я бы хотел сделать это как-то так:
// Special magic PHP function which can be used for invoking functions dynamically
InvokeFunction( $funcPrototype, $function_call_spec["parameters"] );
В результате вызывается myFunction, и все параметры в массиве передаются каждой отдельной переменной параметра в прототипе.
Любые комментарии приветствуются.
Привет.
/ Р
PS: Ни один из кодов в этом посте не был проверен на опечатки и т. Д.