Düz başka bir işlev için bir işlevin bağımsız değişken Passing

2 Cevap

PHP, tek tek bunları belirtmek zorunda kalmadan başka bir işlev için düz bir işlevin argümanlar göndermek için bir yol var? func_get_arg(), diğer işlevi bireysel argümanları ve sadece tek bir dizi alır, böylece genişletmek için bir yolu var mı?

I bar() gibi pek için foo() düz gelen argümanlar göndermek istiyorum:

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

2 Cevap

Evet.

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

	call_user_func_array("bar",$args);

}

Eğer tamamen ayrı bir sınıf örneğine ait bir fonksiyonu aramak istiyorsanız, bu bir dizi olarak call_user_func_array için ilk arg geçirerek yapılabilir.

Bu örnekte, fonksiyon foo neyse argümanlar kabul eder, ve $bar->baz->bob() içine doğrudan geçer ve sonucu döndürür.

public function foo(/* example arguments */)
{
    return call_user_func_array
    (
        array($bar->baz, 'bob'),
        func_get_args()
    );
}