2017-05-22 2 views
1

AusgabePHP Whoops Fehler handle klar Puffer

In prozeduralen scripting der hübschen Seite Handler Inhalt Whoops PHP wird mit Teil-Inhalte aus dem Anwendungspuffer Ausgang gemischt werden. Whoops kann verschlüsselt erscheinen oder in einem versteckten HTML-Tag ausgegeben werden.

Frage

Wie die vorherigen Puffer löschen, bevor Whoops Handler Puffer?

Antwort

0

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.