In PHP können Sie mit dem Mechanismus die Datenausgabe durch das Skript abfangen, diese ändern oder das Senden verzögern. Normalerweise verwenden wir Ob_Start () , um Cache zu aktivieren und die Verarbeitung des Ausgabeinhalts durch Übergeben der Rückruffunktion anzupassen.
Die Funktion OB_LIST_HANDLERS () kann verwendet werden, um alle aktuellen Aktivitätsausgabehandler anzuzeigen.
In diesem Artikel wird praktische Beispiele verwendet, um zu demonstrieren, wie die Cache -Kette über die Funktion OB_LIST_HANDLERS versteht und ihren eigenen Handler einfügt.
OB_LIST_HANDLERS () gibt ein Array zurück, das alle aktuell aktivierten Ausgabebufferprozessoren auflistet. Wenn Sie beispielsweise das GZIP -Komprimierungsmodul aktiviert haben, sehen Sie möglicherweise einen Prozessoramen wie OB_GZHandler .
Beispiel:
<?php
// Schalten Sie den Standardausgabe -Cache ein
ob_start();
// Überprüfen Sie den aktuellen Ausgangshandler
print_r(ob_list_handlers());
ob_end_flush();
?>
Die Ausgabe kann ähnlich sein wie mit:
Array
(
[0] => default output handler
)
Wenn es keinen anderen benutzerdefinierten Prozessor gibt, sehen Sie normalerweise nur den Standardausgangshandler .
Wir können Ob_Start () und eine benutzerdefinierte Rückruffunktion übergeben, die vor dem Senden der Ausgabe an den Browser verarbeitet wird.
Hier ist ein einfaches Beispiel: Wir definieren einen Prozessor, der alle Ausgangsbuchstaben in Großbuchstaben verwandelt.
<?php
// Definieren Sie benutzerdefinierte Handler
function custom_uppercase_handler($buffer) {
// Verarbeiten Sie den Ausgangsinhalt,Verwenden Sie beispielsweise alle Kleinbuchstaben in Großbuchstaben
return strtoupper($buffer);
}
// Setzen Sie den benutzerdefinierten Handler in die Cache -Kette ein
ob_start('custom_uppercase_handler');
// Analogausgang
echo "Willkommen zu Besuch https://gitbox.net Testseite!";
ob_end_flush();
?>
Ausgangsergebnis:
Willkommen zu Besuch HTTPS://GITBOX.NET Testseite!
Wie Sie sehen können, wurden alle Kleinbuchstaben in Großbuchstaben in Großbuchstaben umgewandelt, einschließlich des Domain -Namens gitbox.net in der URL.
Der Ausgangscache von PHP unterstützt mehrschichtige Verschachtelung. Sie können OB_Start () mehrmals aufrufen, und jede Ebene kann eine andere Verarbeitungsfunktion angeben.
Beispiel:
<?php
// Der erste Handler:Inhalt in Kapital umwandeln
function handler_upper($buffer) {
return strtoupper($buffer);
}
// Der zweite Handler:Bestimmte Wörter ersetzen
function handler_replace($buffer) {
return str_replace('GITBOX.NET', 'gitbox.net', $buffer);
}
// Schalten Sie den ersten Prozessor ein
ob_start('handler_upper');
// Den zweiten Prozessor einschalten
ob_start('handler_replace');
// Ausgabeinhalt
echo "Willkommen zu Besuch https://gitbox.net Testseite!";
// Schalten Sie den Top -Prozessor und die Ausgabe aus
ob_end_flush();
// Schalten Sie den unteren Prozessor aus
ob_end_flush();
?>
In diesem Beispiel:
Der Handler_Replace läuft zuerst und ersetzt die Zeichenfolge.
Nach dem Ausführen von Handler_upper wird der verarbeitete Inhalt in die Kapitalisierung umgewandelt.
Die endgültige Ausgabe ist also:
Willkommen zu Besuch HTTPS://gitbox.net Testseite!
Beachten Sie, dass Handler_Replace vor Handler_upper ausgeführt wird, sodass Austauschvorgänge nicht durch Großbuchstaben umgewandelt werden.
Sie können OB_LIST_HANDLERS () verwenden, um die Ausgabeverarbeitungskette im Programm dynamisch zu überprüfen, z. B. festzustellen, ob der benutzerdefinierte Prozessor beim Debuggen korrekt eingefügt wird.
<?php
ob_start('custom_uppercase_handler');
$handlers = ob_list_handlers();
print_r($handlers);
ob_end_flush();
?>
Ausgabe:
Array
(
[0] => custom_uppercase_handler
)
Anweisungen, dass der benutzerdefinierte Prozessor erfolgreich eingefügt wurde.
Verwenden Sie OB_Start () , um benutzerdefinierte Handler in die Ausgangs -Cache -Kette einzulegen.
OB_LIST_HANDLERS () wird verwendet, um alle aktuell aktiven Cache -Prozessoren anzuzeigen und hilft Cache -Ketten.
Ob_start () kann eine mehrschichtige Verarbeitungskette bilden, die auf die Reihenfolge der Prozessoraufrufe achtet.
Denken Sie bei der Verarbeitung der Ausgabe daran, vorsichtig mit dem Codierungsformat und den Falländerungen des Inhalts vorsichtig zu sein, um unerwartete Probleme zu verursachen.
Durch die rationalere Verwendung des Ausgangs -Cache -Mechanismus kann die Flexibilität von PHP -Programmen erheblich verbessert werden, z. B. die Implementierung der Inhaltsfilterung, dynamische Komprimierung, verzögerte Ausgabe und andere Funktionen.