Передача аргументов функции прямо другой функции - PullRequest
2 голосов
/ 22 сентября 2009

В PHP, есть ли способ отправить аргументы функции прямо в другую функцию без необходимости указывать их один за другим? Есть ли способ расширить func_get_arg(), чтобы другая функция получала отдельные аргументы, а не только один массив?

Я хотел бы отправить аргументы от foo() прямо на bar() примерно так:

function foo($arg1, $arg2, $arg3)
{
  $args = expand_args(func_get_arg());
  bar($args);
}

Ответы [ 2 ]

5 голосов
/ 22 сентября 2009

да.

function foo($arg1, $arg2, $arg3)
{
    $args = func_get_arg();

    call_user_func_array("bar",$args);

}
0 голосов
/ 02 августа 2012

Если вы хотите вызвать его для функции, принадлежащей экземпляру полностью отдельного класса, это можно сделать, передав первый аргумент call_user_func_array в виде массива.

В этом примере функция foo принимает любые аргументы и передает их непосредственно в $bar->baz->bob() и возвращает результат.

public function foo(/* example arguments */)
{
    return call_user_func_array
    (
        array($bar->baz, 'bob'),
        func_get_args()
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...