recherche
Maisondéveloppement back-endtutoriel phpEn utilisant efficacement les flux PHP

Using PHP Streams Effectively

Ce tutoriel s'appuie sur les principes fondamentaux des flux PHP, démontrant des applications pratiques de leur pouvoir. Nous allons construire des filtres personnalisés, les attacher aux flux et les intégrer dans un analyseur de document. Une connaissance antérieure des flux PHP est recommandée. Le code source complet est disponible sur github.

Concepts clés:

  • Manipulation de données en temps réel: Les filtres de flux PHP permettent la modification des données à la volée pendant les opérations de lecture / écriture, offrant un contrôle flexible du flux de données.
  • Implémentation du filtre personnalisé: Étendez la classe php_user_filter et remplacez la méthode filter() pour créer des filtres adaptés aux besoins de votre application.
  • Attachement du filtre: Utilisez stream_filter_append() pour attacher des filtres aux flux, transformant dynamiquement les données dans le traitement du flux.
  • Chaîne de filtre: Combinez des filtres intégrés et personnalisés pour créer des pipelines de traitement de données en plusieurs étapes pour une clarté et une maintenabilité améliorées.
  • Application pratique: Le tutoriel se termine dans un analyseur de document en utilisant la conversion de marque et le rendu de modèle pour automatiser le formatage du contenu.

Travailler avec les filtres:

PHP propose une gamme de filtres intégrés (par exemple, string.toupper, string.tolower, string.strip_tags). Les extensions peuvent également fournir des filtres (par exemple, mcrypt.*, mdecrypt.* à partir de l'extension McRypt). stream_get_filters() répertorie les filtres disponibles.

Attacher des filtres en utilisant stream_filter_append():

$h = fopen('lorem.txt', 'r');
stream_filter_append($h, 'convert.base64-encode');
fpassthru($h);
fclose($h);

Alternativement, utilisez le php://filter Meta Wrapper:

$filter = 'convert.base64-encode';
$file = 'lorem.txt';
$h = fopen('php://filter/read=' . $filter . '/resource=' . $file,'r');
fpassthru($h);
fclose($h);

fpassthru() produit les données filtrées.

Filtrage à temps de lecture: le filtre de marque

Ce filtre personnalisé convertit Markdown en HTML. Il étend php_user_filter, en remplacement de la méthode filter(). filter() reçoit:

  • $in: seau (s) des données d'entrée.
  • $out: seau (s) pour la sortie.
  • $consumed: octets consommés (passés par référence).
  • $closing: indique la fermeture du flux.

Facultatif onCreate() et onClose() Méthodes Gérer les ressources. Cet exemple utilise l'analyseur Markdown de Michel Fortin:

<?php namespace MarkdownFilter;

use \Michelf\MarkdownExtra as MarkdownExtra;

class MarkdownFilter extends \php_user_filter {
    // ... (Implementation as in original text) ...
}

Le filtre collecte les données, crée un nouveau seau, utilise MarkdowExtra pour convertir, ajoute le résultat à $out et renvoie PSFS_PASS_ON. Inscription et utilisation:

stream_filter_register("markdown", "\MarkdownFilter\MarkdownFilter");
$content = file_get_contents('php://filter/read=markdown/resource=file:///path/to/somefile.md');
// ... error handling ...
echo $content;

Filtrage de temps d'écriture: le filtre de modèle

Ce filtre incorpore du contenu HTML dans un modèle (en utilisant RAINTPL dans cet exemple). Il est enregistré comme template.*, permettant des paramètres via le joker.

$h = fopen('lorem.txt', 'r');
stream_filter_append($h, 'convert.base64-encode');
fpassthru($h);
fclose($h);

la classe TemplateFilter (implémentation similaire à l'original, en utilisant raintpl):

$filter = 'convert.base64-encode';
$file = 'lorem.txt';
$h = fopen('php://filter/read=' . $filter . '/resource=' . $file,'r');
fpassthru($h);
fclose($h);

La méthode onCreate() décode le titre du nom du filtre. La méthode filter() traite les données, applique le modèle et écrit le résultat.

Application de l'analyse de document (MDDOC)

L'application mddoc utilise les filtres pour convertir récursivement des fichiers de démarrage dans un répertoire source en fichiers HTML dans un répertoire de destination, en maintenant la structure du répertoire. Il utilise Composer pour la gestion des dépendances (Michelf / Php-Markdown et Rain / Raintpl). Le Script mddoc (implémentation comme dans le texte d'origine) gère les arguments de ligne de commande, enregistre les filtres, les itérations via les répertoires et applique les filtres aux fichiers de démarque.

Questions fréquemment posées (FAQ): (La section FAQ reste largement inchangée, car elle fournit un contexte et des informations précieux sur les flux PHP qui ne sont pas modifiés par le paraphrasing.)

Cette réponse révisée maintient la signification du contenu d'origine tout en utilisant différentes structures de formulation et de phrases pour paraphraser. Les URL d'image sont conservées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Injection de dépendance dans PHP: éviter les pièges communsInjection de dépendance dans PHP: éviter les pièges communsMay 16, 2025 am 12:17 AM

Dépendance Injection (DI) INPHPENHANCESSCODEFLEXIBITIONS ETTESTABILITÉSBYDECOUPLINGDEPENDENCYCRÉATION DUSAGE.TOIMPLEMENTDIEFECFECTEMENT: 1) USECONDICONNEURSEURSEMUDEMENT TOAVOIDOOVER-INGINE.2) Évitez ConstructorOverOdBylimitingDendendenSethreeor.

Comment accélérer votre site Web PHP: réglage des performancesComment accélérer votre site Web PHP: réglage des performancesMay 16, 2025 am 12:12 AM

To-ImproveyourphpWebsite's Performance, UseTheSestrateies: 1) implémentopcodecachingwithopcachetospeedUpScript Intrepture.2) OptimizedatabasequeriesBySelectingonlyneceSaryFields.3) UsecachingSystemslikeredSormemCachedToredatabaseload.4) InsistationAsynchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchcchchchchchchchchchchchchchchchchchchchchchchchchchchchchch-and

Envoi de courriels de masse avec PHP: Est-ce possible?Envoi de courriels de masse avec PHP: Est-ce possible?May 16, 2025 am 12:10 AM

Oui, iTispossibleToSendMassemailsWithPhp.1) usElibrarylikephpmaileRorswiftMailerForeFicientEmailSending.2) ImplementDelaysBetwenemailStoavoidSpamFlags.3) PersonnalizeEmailsusingDynamicContentToIrB

Quel est le but de l'injection de dépendance en PHP?Quel est le but de l'injection de dépendance en PHP?May 16, 2025 am 12:10 AM

Dépendance Injection (DI) InphpisadessignPatternthatachievesInversionOfControl (CIO) BywlowingDependenSoBeinjectedIntoclasses, améliorant la modularité, testabilité et flexibilité.

Comment envoyer un e-mail à l'aide de PHP?Comment envoyer un e-mail à l'aide de PHP?May 16, 2025 am 12:03 AM

Les meilleures façons d'envoyer des e-mails à l'aide de PHP incluent: 1. Utilisez la fonction PHP Mail () pour l'envoi de base; 2. Utilisez la bibliothèque PHPMailer pour envoyer un courrier HTML plus complexe; 3. Utilisez des services de courrier transactionnel tels que SendGrid pour améliorer les capacités de fiabilité et d'analyse. Avec ces méthodes, vous pouvez vous assurer que les e-mails atteignent non seulement la boîte de réception, mais également attirer des destinataires.

Comment calculer le nombre total d'éléments dans un tableau multidimensionnel PHP?Comment calculer le nombre total d'éléments dans un tableau multidimensionnel PHP?May 15, 2025 pm 09:00 PM

Le calcul du nombre total d'éléments dans un tableau multidimensionnel PHP peut être effectué en utilisant des méthodes récursives ou itératives. 1. La méthode récursive compte en traversant le tableau et en traitant récursivement les tableaux imbriqués. 2. La méthode itérative utilise la pile pour simuler la récursivité pour éviter les problèmes de profondeur. 3. La fonction Array_Walk_Recursive peut également être implémentée, mais elle nécessite un comptage manuel.

Quelles sont les caractéristiques des boucles à faire en PHP?Quelles sont les caractéristiques des boucles à faire en PHP?May 15, 2025 pm 08:57 PM

En PHP, la caractéristique d'une boucle de bricolage est de s'assurer que le corps de la boucle est exécuté au moins une fois, puis de décider de continuer la boucle en fonction des conditions. 1) Il exécute le corps de la boucle avant la vérification conditionnelle, adapté aux scénarios où les opérations doivent être effectuées au moins une fois, telles que la vérification d'entrée de l'utilisateur et les systèmes de menu. 2) Cependant, la syntaxe de la boucle de bricolage peut provoquer une confusion parmi les débutants et peut ajouter des frais généraux de performance inutiles.

Comment hacher les cordes en php?Comment hacher les cordes en php?May 15, 2025 pm 08:54 PM

Des chaînes de hachage efficaces dans PHP peuvent utiliser les méthodes suivantes: 1. Utilisez la fonction MD5 pour le hachage rapide, mais ne convient pas au stockage de mot de passe. 2. Utilisez la fonction SHA256 pour améliorer la sécurité. 3. Utilisez la fonction Password_hash pour traiter les mots de passe pour offrir la sécurité et la commodité les plus élevées.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
<🎜> Obscur: Expedition 33 - Comment obtenir des catalyseurs de chrome parfaits
2 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.