Ich bin heute auf ein interessantes Thema gestoßen. Wir haben eine Anwendung, die die Caching-Funktionalität von Zend Frameworks nutzt. Ein Antrag auf diese Anwendung erfordert typischerweise eine Factory-Methode die folgende Zeilecall_user_func_array vs. call_user_func
$result = call_user_func_array(array("myclass", "factory"), array($id));
Die Idee, ein Objekt aus der Factory-Methode zurückzukehren ist, dass wir später zugreifen können. Wenn wir eine Caching-Funktion implementiert haben, stirbt dieser Aufruf einfach. Keine Fehler, nur ein weißer Bildschirm. Nichts im Fehlerprotokoll. Wir können die Zeile vor dem Fehler protokollieren, aber der Fehler in der Factory-Methode versucht nichts.
Interessanterweise die Linie zu ändern:
$result = call_user_func(array("myclass", "factory"), $id);
behebt das Problem.
Wir haben ein paar Stunden damit verbracht, nach Fehlerberichten Ausschau zu halten und haben uns nicht viel vorgenommen, um dieses Verhalten zu erklären. Gedanken an jemanden?
Ich habe dieses Problem erst kürzlich beim Konvertieren meines gesamten Codes zur Verwendung von Namespaces bemerkt. Die Klasse existiert gut und ich kann Instanzen davon instanziieren. Aber wenn ich eine Instanzen nehme und versuche, eine Methode mit _array oder nicht aufzurufen, passiert nichts. Der Code wird fortgesetzt, aber die Methode scheint nie aufgerufen zu werden. –