call_user_func_array против call_user_func
Я столкнулся с интересной проблемой сегодня. У нас есть приложение, которое использует функциональность кэширования Zend Frameworks. Запрос к этому приложению обычно вызывает метод фабрики, используя следующую строку
$result = call_user_func_array(array("myclass", "factory"), array($id));
Идея состоит в том, чтобы вернуть объект из фабричного метода, к которому мы можем получить доступ позже. Когда мы реализовали функцию кэширования, этот вызов просто умирает. Никаких ошибок, только белый экран. Ничего в журнале ошибок. Мы можем записать строку ошибки до того, как все будет в порядке, но попытка error_log внутри фабричного метода ничего не даст
Интересно, что изменив строку на:
$result = call_user_func(array("myclass", "factory"), $id);
устраняет проблему
Мы потратили несколько часов, просматривая сообщения об ошибках, и не смогли придумать много, чтобы объяснить это поведение. Мысли кто-нибудь?