Chcę wywołać funkcję z call_user_func_array, ale zauważyłem, że jeśli argument jest odniesieniem w definicji funkcji i jest prostą wartością w call_user_func_array, pojawia się następujące ostrzeżenie: Ostrzeżenie: Parametr 1 do testu() powinien być odniesienia, wartość podanaPHP Jak sprawdzić, czy zmienna jest odniesieniem?
Oto prosty przykład tego, co próbuję zrobić:
<?php
$a = 0;
$args = array($a);
function test(&$a) {
$a++;
}
$a = 0;
call_user_func_array('test', $args);
?>
Moje pytanie brzmi: jak mogę wiedzieć, czy wartość (w tym przypadku pierwsza wartość $ args) jest referencją czy nie?
wszystko co widzę to funkcje, aby sprawdzić, czy dwóch tablic/obiektów/zmienne są skierowane do tego samego obszaru pamięci przez modyfikację jednej i sprawdzenie, czy drugi też jest zmodyfikowany. W moim kodzie (nie w przykładzie, rzeczywistym), mam tylko tablicę argumentów i chcę wiedzieć, czy jeden argument jest referencją. W ten sposób mogę rzucić błąd, jeśli funkcja oddzwaniania chce referencji, a tablica zawiera prostą wartość. –
To już wyzwala ostrzeżenie, które jest przeznaczone dla programistów. Jaki błąd chcesz? Możesz [ustawić niestandardową procedurę obsługi błędów] (http://php.net/set_error_handler), jeśli chcesz zmienić zachowanie. – cmbuckley