PHP调用函数与参数使用数组

Dar*_*ius 4 php

function myFunc($x, $y) {
    echo "x : {$x}";
    echo "y : {$y}";
}
$params = array("y" => 1, "x" => 2);
Run Code Online (Sandbox Code Playgroud)

是否可以myFunc像使用call_user_func_array函数一样调用,但数组的键会自动在函数中设置正确的参数?是否有任何功能可以执行此操作或是否可以创建此功能?例如 :

call_func('myFunc', $params);
Run Code Online (Sandbox Code Playgroud)

结果就是这样

x : 2
y : 1
Run Code Online (Sandbox Code Playgroud)

谢谢.

Ry-*_*Ry- 7

可能有一种更简单的方法可以做到这一点,但反射也应该有效:

function call_func_keys($functionName, $args) {
    $f = new ReflectionFunction($functionName);
    $inOrder = array();

    foreach($f->getParameters() as $param) {
        if(array_key_exists($param->name, $args)) {
            $inOrder[] = $args[$param->name];
        } else {
            $inOrder[] = $param->getDefaultValue(); # Will throw a reflection exception if not optional
        }
    }

    call_user_func_array($functionName, $inOrder);
}
Run Code Online (Sandbox Code Playgroud)

这是一个演示.

  • @SDC Reflection是好的,因为它实际上并没有实例化类或加载实际函数,当然它会是一个小的性能命中,但它可以忽略不计,你将不会在一个循环中进行百万次迭代(我希望),否则你不会使用PHP;) (3认同)