<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ------------------- Contenu non pertinent préexistant -------------------</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Ce sont certaines choses qui ne sont pas liées au contenu de l'article PHP Exemple de sortie。\n"</span></span><span>;
</span><span><span class="hljs-variable">$time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Heure actuelle: <span class="hljs-subst">$time</span></span></span><span>\n";
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ------------------- Démarrer le texte -------------------</span></span><span>
<span class="hljs-comment">/**
* titre: PHP milieu ob_get_contents() et ob_start() Comment utiliser la nidification multicouche?Analyse des compétences pratiques
*
* exister PHP milieu,Tampon de sortie(Output Buffering)C'est une fonctionnalité très utile,它允许你exister脚本执行过程milieu
* Capturer le contenu de sortie,Au lieu de l'envoyer immédiatement au navigateur。`ob_start()` et `ob_get_contents()` 是Tampon de sortie
* milieu最常用的函数。Lorsque vous avez besoin d'une mise en mémoire tampon imbriquée multicouche pour contrôler la sortie de différentes parties,Il est particulièrement important de comprendre comment ils fonctionnent。
*
* 1. ob_start() Le rôle de
* --------------------
* `ob_start()` 启动一个新的Tampon de sortie区。Toutes les sorties après(comme echo、print)Ils seront mis en cache dans ce tampon,
* Au lieu de le sortir directement dans le navigateur。
*
* Exemple:
*/</span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Ceci est le contenu du premier tampon de couche。"</span></span><span>;
</span><span><span class="hljs-variable">$content1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>(); </span><span><span class="hljs-comment">// Obtenez le contenu tampon actuel</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// Sortir et terminer le tampon</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\nLe contenu du premier tampon obtenu: <span class="hljs-subst">$content1</span></span></span><span>\n";
<span class="hljs-comment">/**
* 2. Tampon imbriqué multicouche
* ----------------
* Lorsque la nidification multicouche est requise,Peut être appelé plusieurs fois ob_start(),Un nouveau tampon est créé à chaque fois que l'appel est appelé,Former une structure de pile。
* passer ob_get_contents() Vous pouvez obtenir le contenu du tampon actuel,passer ob_end_flush() ou ob_end_clean()
* Peut mettre fin au tampon actuel。
*
* Exemple:
*/</span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Première couche de tampon</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le premier niveau commence\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Deuxième couche de tampon</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Contenu de deuxième couche\n"</span></span><span>;
</span><span><span class="hljs-variable">$secondLayer</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>(); </span><span><span class="hljs-comment">// 获取Contenu de deuxième couche</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>(); </span><span><span class="hljs-comment">// 清空Deuxième couche de tampon(Pas de sortie)</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le premier étage continue\n"</span></span><span>;
</span><span><span class="hljs-variable">$firstLayer</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>(); </span><span><span class="hljs-comment">// Obtenez la première couche de contenu</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// 输出Première couche de tampon区内容</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\nContenu capturé dans la deuxième couche: <span class="hljs-subst">$secondLayer</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Contenu capturé dans la première couche: <span class="hljs-subst">$firstLayer</span></span></span><span>\n";
<span class="hljs-comment">/**
* 3. Conseils pratiques
* ------------
* - Sortie retardée:passer多层缓冲,Vous pouvez d'abord traiter le contenu,Modifier et sortir。
* - Rendu de modèle:exister渲染模板时,Vous pouvez d'abord tamponner la sortie,进行变量替换ou缓存后再输出。
* - Enregistrement:Capturer le contenu de sortie到文件而不是直接输出。
*
* Choses à noter:
* - à chaque fois ob_start() Tous doivent coopérer ob_end_flush() ou ob_end_clean()。
* - Trop de couches imbriquées peuvent augmenter les frais généraux de mémoire,Il est recommandé d'utiliser en fonction des besoins réels。
*
* 4. 综合Exemple
*/</span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"HTML En-tête de page\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>Contenu du sujet</p>\n"</span></span><span>;
</span><span><span class="hljs-variable">$bodyContent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>(); </span><span><span class="hljs-comment">// Effacer mais pas la sortie</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<header>tête</header>\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$bodyContent</span></span><span>; </span><span><span class="hljs-comment">// 再次输出Contenu du sujet</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// Sortir tout</span></span><span>
</span><span><span class="hljs-comment">// ------------------- Fin de texte -------------------</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ------------------- Pas de contenu à la fin -------------------</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"文章结束Exemple:Merci d'avoir lu!\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>