В PHP есть ситуация, когда мне нужно, чтобы страница выполнялась в основном, но в вывод этой страницы был вставлен элемент.
Я думаю, что буферизация вывода может помочь, но я не могу понять, как реализовать ее в моей ситуации.
Мой код выглядит так:
//this document is part of a global functions file
function pageHeader (){
//I'm using $GLOBALS here because it works, however I would really rather a better method if possible
$GLOBALS['error_handler'] = new ErrorHandler(); //ErrorHandler class sets a function for set_error_handler, which gets an array of errors from the executed page
require_once($_SERVER['DOCUMENT_ROOT'].'/sales/global/_header.php');
//I would like the unordered list from ->displayErrorNotice() to be displayed here, but if I do that the list is empty because the list was output before the rest of the document was executed
}
function pageFooter (){
$GLOBALS['error_handler'] ->displayErrorNotice(); //this function displays the errors as an html unordered list
include($_SERVER['DOCUMENT_ROOT']."/sales/global/_footer.php");
}
Большинство страниц сайта содержат этот документ и используют функции pageHeader()
и pageFooter()
. Я пытаюсь достичь неупорядоченного списка сгенерированных PHP ошибок в HTML-списке сразу после включения _header.php. Я могу заставить список работать так, как задумано, если поместить его в нижний колонтитул (после того, как документ был выполнен), но я не хочу его там. Я думаю, что я мог бы переместить его с JS, но я думаю, что должно быть решение PHP.
UPDATE
Мне интересно, будет ли функция обратного вызова для ob_start()
, которая ищет буфер по регулярному выражению, куда поместить список ошибок, а затем вставляет его, будет решением.
ОБНОВЛЕНИЕ 2 Я решил проблему, мой ответ ниже. Я приму его через 2 дня, когда мне позволят.