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()
機能を使用しています。私が達成しようとしているのは、_header.phpがインクルードされた後に、PHPの生成されたエラーのリストをHTMLリストに並べ替えることです。フッタに(ドキュメントが実行された後に)置くと、リストを意図した通りに動作させることができますが、私はそれを望んでいません。私はJSでそれを動かすことができると思うが、PHPソリューションが必要であると思う。
UPDATE
私はエラーリストを置くために正規表現によるバッファを検索ob_start()
ためのコールバック関数かどうかを疑問に思って、それが解決策になります挿入しています。
UPDATE 2私はこの問題を解決しました。私の答えは以下のとおりです。私は許可されてから2日後にそれを受け入れます。
うん、あなたは正しく理解されています。実際、jQueryでは、フッターの後からリストを希望の場所に移動するのは簡単ですが、可能であれば純粋なPHPソリューションを好むでしょう。 –
これは私のPHP理解の範囲を少し超えていますが、計算されるポイントよりも前の要素をドキュメント内に実装できないことは間違いありません。どんな種類のエラーをキャプチャしていますか? DOMにコミットする前にこれらのエラーをキャプチャすることは可能ですか? – VictorKilo
私がキャプチャしているエラーは、何か問題があるときにPHPがトリガするE_NOTICEとE_WARNINGのエラーです。すべての目的は、すべてのクライアントが直面しているページにバグレポートフォームがあり、可能な限りバグを引き起こした可能性のあるページに関する情報を、そのフォームに記入したいということです。うん、出力バッファリングはあなたが提案していることをします。 –