En PHP, le mécanisme vous permet d'intercepter la sortie de données par le script, de le modifier ou de retarder l'envoi. Habituellement, nous utiliserons ob_start () pour activer le cache et personnaliser le traitement du contenu de sortie en transmettant la fonction de rappel.
La fonction ob_list_handlers () peut être utilisée pour afficher tous les gestionnaires de sortie d'activité actuels.
Cet article utilisera des exemples pratiques pour démontrer comment comprendre la chaîne de cache via la fonction OB_LIST_HANDLERS et y insérer son propre gestionnaire.
ob_list_handlers () Renvoie un tableau répertorie tous les processeurs de tampon de sortie actuellement activés. Par exemple, si vous avez activé le module de compression GZIP , vous pouvez voir un nom de processeur comme OB_GZHandler .
Exemple:
<?php
// Allumez le cache de sortie par défaut
ob_start();
// Vérifiez le gestionnaire de sortie actuel
print_r(ob_list_handlers());
ob_end_flush();
?>
La sortie peut être similaire à:
Array
(
[0] => default output handler
)
S'il n'y a pas d'autre processeur personnalisé, vous ne voyez généralement que le gestionnaire de sortie par défaut .
Nous pouvons utiliser ob_start () et passer dans une fonction de rappel personnalisée, qui sera traitée avant l'envoi de la sortie au navigateur.
Voici un exemple simple: nous définissons un processeur qui transforme toutes les lettres minuscules de sortie en majuscules.
<?php
// Définir les gestionnaires personnalisés
function custom_uppercase_handler($buffer) {
// Traiter le contenu de sortie,Par exemple, transformez toutes les lettres minuscules en majuscules
return strtoupper($buffer);
}
// Insérer un gestionnaire personnalisé en chaîne de cache
ob_start('custom_uppercase_handler');
// Sortie analogique
echo "Bienvenue à visiter https://gitbox.net Page de test!";
ob_end_flush();
?>
Résultat de sortie:
Bienvenue à visiter HTTPS://GITBOX.NET Page de test!
Comme vous pouvez le voir, toutes les lettres minuscules ont été converties en majuscules, y compris le nom de domaine gitbox.net dans l'URL.
Le cache de sortie de PHP prend en charge la nidification multicouche. Vous pouvez appeler ob_start () plusieurs fois et chaque couche peut spécifier une fonction de traitement différente.
Exemple:
<?php
// Le premier gestionnaire:Convertir le contenu en capital
function handler_upper($buffer) {
return strtoupper($buffer);
}
// Le deuxième gestionnaire:Remplacer des mots spécifiques
function handler_replace($buffer) {
return str_replace('GITBOX.NET', 'gitbox.net', $buffer);
}
// Activez le premier processeur
ob_start('handler_upper');
// Activez le deuxième processeur
ob_start('handler_replace');
// Contenu de sortie
echo "Bienvenue à visiter https://gitbox.net Page de test!";
// Éteignez le processeur supérieur et la sortie
ob_end_flush();
// Éteignez le processeur inférieur
ob_end_flush();
?>
Dans cet exemple:
Le handler_replace s'exécute en premier et remplace la chaîne.
Après avoir exécuté Handler_upper , le contenu traité est converti en capitalisation.
La sortie finale est donc:
Bienvenue à visiter HTTPS://gitbox.net Page de test!
Notez que Handler_Replace s'exécute avant Handler_upper , de sorte que les opérations de remplacement ne sont pas affectées par la conversion en majuscules.
Vous pouvez utiliser ob_list_handlers () pour vérifier dynamiquement la chaîne de traitement de sortie dans le programme, telles que déterminer si le processeur personnalisé est correctement inséré lors du débogage.
<?php
ob_start('custom_uppercase_handler');
$handlers = ob_list_handlers();
print_r($handlers);
ob_end_flush();
?>
Sortir:
Array
(
[0] => custom_uppercase_handler
)
Instructions que le processeur personnalisé a été inséré avec succès.
Utilisez ob_start () pour insérer des gestionnaires personnalisés dans la chaîne de cache de sortie.
ob_list_handlers () est utilisé pour afficher tous les processeurs de cache actuellement actifs et aide à déboguer les chaînes de cache.
Ob_start () peut former une chaîne de traitement multicouche, en faisant attention à l'ordre des appels de processeur.
Lors du traitement de la sortie, n'oubliez pas de faire attention au format de codage et aux modifications de cas du contenu pour éviter de causer des problèmes inattendus.
En utilisant rationnellement le mécanisme de cache de sortie, la flexibilité des programmes PHP peut être considérablement améliorée, comme la mise en œuvre du filtrage du contenu, de la compression dynamique, de la sortie retardée et d'autres fonctions.