call_user_func_array vs. call_user_func
Ich bin heute auf ein interessantes Problem gestoßen. Wir haben eine Anwendung, die die Caching-Funktionalität von Zend Frameworks nutzt. Eine Anforderung an diese Anwendung ruft normalerweise eine Factory-Methode mit der folgenden Zeile auf
$result = call_user_func_array(array("myclass", "factory"), array($id));
Die Idee ist, ein Objekt aus der Factory-Methode zurückzugeben, auf das wir später zugreifen können. Als wir eine Caching-Funktion implementiert haben, ist dieser Aufruf endgültig erledigt. Keine Fehler, nur ein weißer Bildschirm. Nichts im Fehlerprotokoll. Wir können die Zeile vor ok als Fehler protokollieren, aber der Versuch, error_log innerhalb der Factory-Methode auszuführen, führt zu nichts.
Interessanterweise ändern Sie die Zeile in:
$result = call_user_func(array("myclass", "factory"), $id);
behebt das Problem.
Wir haben einige Stunden damit verbracht, uns nach Fehlerberichten umzusehen, und haben nicht viel gefunden, um dieses Verhalten zu erklären. Gedanken jemand?