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?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage