考虑以下PHP文件:
的index.php
<!DOCTYPE html>
<head>
<title>Welcome to my home page!</title>
</head>
<body>
<?php
for($i = 0; $i < 2000; ++$i)
{
echo $i.'<br>';
}
?>
</body>
</html>
PHP是否只将内容echo
或静态HTML加载到内存中?
也许答案广为人知,但我没有找到任何文件。
我会喜欢RTM链接顺便说一句。
答案 0 :(得分:1)
答案很简单,处理/找到php解释器读取整个文件所需的<?
标签。
所以是的PHP加载整个文件。
PHP的ob(输出缓冲区)功能实际上允许您利用它。
请参阅on_start()
文档的第一个示例说明此
<?php
function callback($buffer)
{
// replace all the apples with oranges
return (str_replace("apples", "oranges", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php
ob_end_flush();
?>
答案 1 :(得分:0)
PHP的输出缓冲区包含所有内容。
请参阅:http://php.net/manual/en/language.basic-syntax.phpmode.php
这可以正常工作,因为当PHP解释器点击?&gt; 关闭标签,它只是开始输出它找到的任何东西(除了 紧接着的换行符 - 参见指令分离) 直到它击中另一个开口标记,除非在中间 条件陈述,在这种情况下,口译员将确定 在决定跳过什么之前有条件的结果 过度。请参阅下一个示例。
因此,PHP标记之外的任何内容基本上都被视为echo
。