PHP задерживает вывод заголовков, пока весь PHP-скрипт не будет запущен? - PullRequest
1 голос
/ 10 марта 2011

Можно отложить вывод заголовков в браузер, пока не завершится выполнение всего php-скрипта?

Ответы [ 2 ]

3 голосов
/ 10 марта 2011

Заголовки будут отправлены после отправки первого фрагмента кода с php на веб-сервер.

Таким образом, вы можете просто «ничего не выводить» до конца сценария или use output buffering для достижения того же самого

1 голос
/ 10 марта 2011

Именно так советуют большинство профессиональных программистов, поэтому вы всегда должны делать это так, чтобы вы могли эффективно управлять ошибками и страницами ошибок.

Если ваше приложение уже создано для отображения вывода в видескрипт выполняется, тогда я бы посоветовал вам начать с нуля.

способ, которым я обычно управляю выводом, - это система небольшого шаблона, система шаблона не должна анализировать шаблоны и т. д., просто нужно передатьнабор данных и затем включите требуемый шаблон.

Вы должны создать класс, который принимает данные в виде $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 - С нуля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...