PHP, how to pass func-get-args values to another function as list of arguments?

Viewed 9705

I want to create a function (my_function()) getting unlimited number of arguments and passing it into another function (call_another_function()).

function my_function() {    
   another_function($arg1, $arg2, $arg3 ... $argN);    
}

So, want to call my_function(1,2,3,4,5) and get calling another_function(1,2,3,4,5)

I know that I shoud use func_get_args() to get all function arguments as array, but I don't know how to pass this arguments to another function.

Thank you.

4 Answers

Try call_user_func_array:

function my_function() {    
    $args = func_get_args();
    call_user_func_array("another_function", $args);
}

In programming and computer science, this is called an apply function.

Use call_user_func_array like

call_user_func_array('another_function', func_get_args());

It's not yet documented but you might use reflection API, especially invokeArgs.

(maybe I should have used a comment rather than a full post)

I have solved such a problem with the ...$args parameter in the function.

In my case, it was arguments forwarding to the parent construction call.

public function __construct(...$args)
{
    parent::__construct(...$args);
}
Related