gpt4 book ai didi

PHP:<<< 与 ob_start

转载 作者:可可西里 更新时间:2023-11-01 12:47:49 25 4
gpt4 key购买 nike

在 PHP 中,有时我会看到这个:

$html = <<<HTML
<p>Hello world</p>
HTML;

通常我会使用 ob_start() :

ob_start();
?>
<p>Hello world</p>
<?php
$html = ob_get_contents();
ob_clean();

你能告诉我这两种写入缓冲区的方式有什么区别和优势吗?

最佳答案

$html = <<<HTML
<p>Hello world</p>
HTML;
// equivalent:
$html = "<p>Hello world</p>";

这使用了 PHP string Heredoc syntax ,这是一种编写字符串的语法,类似于使用单引号和双引号,但以某种不同的方式转义。您可以使用 {}直接向其中插入一些 PHP 字符串。


<?php
ob_start();
?>
<p>Hello world</p>
<?php
$html = ob_get_clean();

这是完全不同的事情。它利用 PHP output buffering control捕获 PHP 代码块中的内容。就像在给定的示例中一样,<p>Hello world</p>写在 PHP 代码块之外,应该是立即输出给客户端。启用输出缓冲后,它们存储在 PHP 的缓冲区中,以便以后可以使用 ob_get_contents() 检索它。或 ob_get_clean() .如果你需要插入任何 PHP 变量,你需要使用 <?=$blah?>甚至 <?php echo $blah?> .


一些CMS使用输出缓冲控制功能来管理内容和模块。一个例子是 Joomla。这种设计的好处是,每当模块需要将内容放置到它的预留空间时,它可以简单地使用 echo使内容可用。这可以简化从模块中获取内容的方式,不需要实现特定的函数调用或分配给特定的变量,这使得系统更易于管理。

<?php
ob_start();
include dirname(__FILE__)."/content.php";
$content = ob_get_clean();
output_document(array("body"=>$content));

我还利用输出缓冲功能,这样我就可以在顶部包含一个文件,并且在最后没有任何 PHP 我可以创建一个简单的模板系统,但这有点离题。

关于PHP:<<< 与 ob_start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13455517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com