call_user_func_array vs. call_user_func

Eu me deparei com uma questão interessante hoje. Temos um aplicativo que utiliza a funcionalidade de armazenamento em cache do Zend Frameworks. Uma solicitação para este aplicativo normalmente chama um método de fábrica usando a seguinte linha

$result =  call_user_func_array(array("myclass", "factory"), array($id));

A ideia é retornar um objeto do método de fábrica que podemos acessar mais tarde. Quando implementamos um recurso de cache, esta chamada acaba morrendo. Sem erros, apenas uma tela branca. Nada no log de erros. Podemos errar o log da linha antes de ok, mas tentar error_log dentro do método factory não faz nada.

Curiosamente, alterando a linha para:

$result =  call_user_func(array("myclass", "factory"), $id);

Corrige o problema.

Passamos algumas horas procurando relatórios de bugs e não criamos muito para explicar esse comportamento. Pensamentos alguém?

questionAnswers(3)

yourAnswerToTheQuestion