why should one prefer call_user_func_array over regular calling of function?

Prince Singh picture Prince Singh · Aug 30, 2013 · Viewed 35.9k times · Source
function foobar($arg, $arg2) {
    echo __FUNCTION__, " got $arg and $arg2\n";
}
foobar('one','two'); // OUTPUTS : foobar got one and two 

call_user_func_array("foobar", array("one", "two")); // // OUTPUTS : foobar got one and two 

As I can see both regular one and call_user_func_array method both outputs same, then why should one prefer it?

In which scenario regular calling method will fail but call_user_func_array will not?

Can I get any such example?

Thank you

Answer

deceze picture deceze · Aug 30, 2013
  1. You have an array with the arguments for your function which is of indeterminate length.

    $args = someFuncWhichReturnsTheArgs();
    
    foobar( /* put these $args here, you do not know how many there are */ );
    

    The alternative would be:

    switch (count($args)) {
        case 1:
            foobar($args[0]);
            break;
        case 2:
            foobar($args[0], $args[1]);
            break;
        ...
    }
    

    Which is not a solution.

The use case for this may be rare, but when you come across it you need it.