Php 忽略未使用的类型参数并移动到下一个

Php 忽略未使用的类型参数并移动到下一个,php,function,parameters,Php,Function,Parameters,我一直在找,但找不到任何解决办法。我也不知道这是否可能 我这里有两个案例,有人可以做: 案例1: $callback = function(Object $obj, $var) { // Do stuff } 案例2: $callback = function($var) { // Do stuff } 现在我将这样调用函数: call_user_func_array($callback, [new Object, 'some text']) 但现在有一个问题。在案例2中,

我一直在找,但找不到任何解决办法。我也不知道这是否可能

我这里有两个案例,有人可以做:

案例1:

$callback = function(Object $obj, $var) {
    // Do stuff
}
案例2:

$callback = function($var) {
    // Do stuff
}
现在我将这样调用函数:

call_user_func_array($callback, [new Object, 'some text'])
但现在有一个问题。在案例2中,
$var
将被视为对象参数。当对象未使用时,如何仅向调用发送字符串参数?我不想改变顺序,物体必须是第一个

另外,我注意到这在Symfony框架中是可能的。我将继续研究Symfony是如何做到这一点的,任何提示都将不胜感激


谢谢你的阅读

您可以使用反射

例如:

function call(callable $callback, $var, object $obj = null)
{
    $callbackArguments = array();
    $parameters = (new ReflectionFunction($callback))->getParameters();
    foreach ($parameters as $parameter) {
        if ($parameter->getType() == 'object') {
            $callbackArguments[] = $obj;
        } else {
            $callbackArguments[] = $var;
        }
    }
    return call_user_func_array($callback, $callbackArguments);
}

你不能。如果对象是第一个-首先发送对象。这就是我要找的。非常感谢!