call_user_func_array vs. call_user_func
Me encontré con un tema interesante hoy. Tenemos una aplicación que utiliza la funcionalidad de almacenamiento en caché de Zend Frameworks. Una solicitud a esta aplicación normalmente llama a un método de fábrica usando la siguiente línea
$result = call_user_func_array(array("myclass", "factory"), array($id));
La idea es devolver un objeto del método de fábrica al que podamos acceder más adelante. Cuando implementamos una función de almacenamiento en caché, esta llamada simplemente muere. Sin errores, solo una pantalla blanca. Nada en el registro de errores. Podemos registrar la línea de error antes de que esté bien, pero tratar de error_log dentro del método de fábrica no hace nada.
Curiosamente, cambiando la línea a:
$result = call_user_func(array("myclass", "factory"), $id);
Soluciona el problema.
Hemos pasado algunas horas buscando informes de errores y no hemos encontrado mucho para explicar este comportamiento. ¿Pensamientos a alguien?