使用 PHP 8 中的 call_user_func_array 调用回调函数,如果传递给 $args 参数的是一个包含键的数组,则使用命名参数调用;如果使用的数组仅包含值,则按位置传递参数。
<?php
function test(string $param1, string $param2): void
{
echo $param1.' '.$param2;
}
$args = ['hello', 'world'];
//hello world
call_user_func_array('test', $args);
$args = ['param2' => 'world', 'param1' => 'hello'];
//hello world
call_user_func_array('test', $args);
$args = ['unknown_param' => 'hello', 'param2' => 'world'];
//Fatal error: Uncaught Error: Unknown named parameter $unknown_param
call_user_func_array('test', $args);
?>