PHP会延迟标头的输出,直到整个PHP脚本运行完毕?

时间:2011-03-10 16:26:21

标签: php http-headers

可以将标题的输出延迟到浏览器,直到整个php脚本完成执行?

2 个答案:

答案 0 :(得分:3)

一旦第一段代码从php发送到网络服务器,就会发送标题。

所以你可以在脚本结束之前“不回应任何东西”或use output buffering来实现同样的目标

答案 1 :(得分:1)

这是大多数专业程序员建议的方式,你应该总是这样做的原因是你可以有效地管理错误和错误页面。

如果您的应用程序已构建为在脚本执行时显示输出,那么我建议您从头开始。

我通常管理输出的方式是使用小模板的系统,模板的系统不需要解析模板等,只需要传递一组数据然后包含所需的模板。

你应该创建一个以$template->set(key[,value = true])形式接受数据的类,然后创建一个显示如$template->display(filename)的函数,当这个函数执行时你应该提取变量然后包含模板文件完成之后,再调用exit(0),这样就不再执行代码了。

一个简单的模板系统就像这样:

class Template
{
    private $_data = array();

    public function set($key,$value = true)
    {
        $this->_data[$key] = $value;
    }

    public function display($template)
    {
        //Check template exuists
        extract($this->_data);
        require_once $template;
        exit(0);
    }
}

然后使用非常简单:

$template = new Template();
$template->set("title","Practical home Page");
$template->set("header","My Home Page");

$lists = array(
    array(
        "value" => "list item 1",
        "id" => "list_item_1",
        "class" => "item"
    ),
    array(
        "value" => "list item 2",
        "id" => "list_item_2",
        "class" => "item"
    )
);

$template->set("menu",$lists);
$template->display("templates/homepage.php");

您可能还想阅读我之前回答的以下答案!

PHP Looping Template Engine - From Scratch