call_user_func_array vs. call_user_func
Spotkałem się dzisiaj z interesującym problemem. Mamy aplikację, która wykorzystuje funkcję buforowania Zend Frameworks. Żądanie skierowane do tej aplikacji zazwyczaj wywołuje metodę fabryczną przy użyciu następującej linii
$result = call_user_func_array(array("myclass", "factory"), array($id));
Pomysł polega na zwróceniu obiektu z metody fabrycznej, do której możemy uzyskać dostęp później. Kiedy zaimplementowaliśmy funkcję buforowania, to wywołanie właśnie, no, umiera. Bez błędów, tylko biały ekran. Nic w dzienniku błędów. Możemy błędnie zalogować linię przed ok, ale próba wpisania błędu w metodzie fabrycznej nic nie robi.
Co ciekawe, zmieniając linię na:
$result = call_user_func(array("myclass", "factory"), $id);
rozwiązuje problem.
Spędziliśmy kilka godzin rozglądając się za raportami o błędach i nie wymyśliliśmy wiele, aby wyjaśnić to zachowanie. Myśli ktoś?