Bu call_user_func_array kullanarak parametreleri referans olarak geçmek () mümkün mü?

2 Cevap php

Kullanırken call_user_func_array() Ben referans bir parametre geçmek istiyorum. Bunu nasıl yapardı. Örneğin

function toBeCalled( &$parameter ) {
    //...Do Something...
}

$changingVar = 'passThis';
$parameters = array( $changingVar );
call_user_func_array( 'toBeCalled', $parameters );

2 Cevap

call_user_func_array() kullanarak referans olarak geçmek için, dizideki parametre bir referans olmalıdır - bunun referans olarak geçirilen olup olmadığını işlev tanımına bağlı değildir. Örneğin, bu işe:

function toBeCalled( &$parameter ) {
    //...Do Something...
}

$changingVar = 'passThis';
$parameters = array( &$changingVar );
call_user_func_array( 'toBeCalled', $parameters );

Daha fazla bilgi için call_user_func_array() function belgelerine notlara bakın.

Burada artık kullanılmayan işlevselliğini kullanıyorsanız hariç. Sen PHP5 mükemmel daha az yaparken bir uyarı oluşturmak olacak.

Uyarı: Çağrı-time pass-by-reference onaylanmaz; Eğer referans olarak geçmek istiyorsanız, zamanı işlev adının beyanını değiştirebilir. Eğer pass-by-başvuru çağrı süresini etkinleştirmek istiyorsanız, size INI dosyasında true allow_call_time_pass_reference ayarlayabilirsiniz ...

Ne yazık ki, bildiğim kadarıyla keşfetmek gibi herhangi bir başka seçenek olarak görünmüyor.