Die folgende Lösung Arbeiter für mich:
Frühestens Punkt des Skripts und vielleicht nur in einem DEBUG oder DEVELOPER-Modus, wie ich Sie zu tun haben müssen:
if(DEVELOPER_DEBUG === true)
ob_start();
Dann, wo Sie Whoops ich erkläre:
if(DEVELOPER_DEBUG === true)
{
$_whoops = new \Whoops\Run();
$_whoops->pushHandler(function(){
ob_clean();
});
$_handler = new \Whoops\Handler\PrettyPageHandler();
$_whoops->pushHandler($_handler);
$_whoops->register();
}
Dies funktionierte einwandfrei in meiner Nutzung c ase in prozeduralem Scripting, um jeden initial generierten Puffer zu löschen, bevor Whoops seine eigene Ausgabe startet.
Warum es funktioniert
ob_start() kann mehrmals aufgerufen werden, der Puffer bündig oder klar Funktion die gleiche Anzahl von Zeiten als Start aufgerufen werden muss in Reihenfolge aufgerufen.
Indem Sie Ihre Anwendung starten einen eigenen Puffer macht es eine Ressource, die gelöscht werden kann, Whoops immer startet auch seinen eigenen Puffer, so durch die Registrierung eines Handlers, um den ersten Puffer (Ihre Anwendung) dann auf das Ereignis zu löschen ein Fehler, Whoops kann diesen vorherigen Puffer löschen.
Puffersteuerung
Zum Beispiel kann jeder Aufruf von ob_start ein inkrementeller Puffer erzeugt.
Wenn Sie ob_start dreimal aufrufen, müssen Sie ob_flush dreimal aufrufen, um den gesamten gepufferten Inhalt auszugeben.
Wenn Sie es einmal aufrufen, löschen oder leeren Sie nur den Inhalt, der generiert wurde, bevor der nächste ob_start deklariert wurde.
Könnte für OOP adaptiv sein.