将字符串回显到HTML标头中

时间:2011-12-11 13:46:40

标签: php html

这让我的思绪扭曲了。很明显,PHP甚至在知道存在问题之前无法提前处理。

我在文档的标题中有这个:

<? $site = new core(); 
register_shutdown_function(shutdown);
echo $site->insert_to_header(); ?>

然后再往下,故意放:

echo $test;

创建警告。这将转到shutdown();,如下所示:

class core {
function shutdown() {
$a = error_get_last();
if ($a == null) {
    echo "No errors";
} else {
    core::insert_to_header_cache('<link rel="stylesheet" href="core.css" type="text/css" />');
    core::insert_to_body_cache('<div class="error-handler"><h3>Error!</h3>
   <br/>Error type: <strong>' . $a[type] . '</strong>
   <br/>Error message: <strong>' . $a[message] . '</strong>
   <br/>Located in: <strong>' . $a[file] . '</strong>
   <br/>Line: <strong>' . $a[line] . '</strong>
   </div>');
}
}
//TODO Teleport variables to here, without doing that beforehand, this whole thing is broken :(
function insert_to_header_cache($insertion ='') {
    $headercache += $insertion . '/n';
    return true;
}

function insert_to_body_cache($insertion ='') {
    $bodycache += $insertion . '/n';
    return true;
}    
function insert_to_header() {
    global $headercache;
    echo $headercache;
    return true;
}

function insert_to_body() {
   global $bodycache;
    return $bodycache;
}
}

我的问题是,如果我的insert_to_header_cache函数已经超过该点,我怎样才能将其输出回标题?

请记住,我意识到呼叫全局$bodycache并且$headercache无效,但这不是问题所在。事先在这里回应任何事情都行不通。因为秩序,我知道的很多。

提前致谢,

埃文哈里森

2 个答案:

答案 0 :(得分:2)

您可以使用输出缓冲。简而言之,它允许您在将其发送到客户端之前收集字符串中的所有输出,最后您可以操纵您拥有的输出并最终将其发送到客户端

答案 1 :(得分:1)

我的建议是,在完成所有处理并在Page对象上执行脚本,样式表或其他资源的任何注入之前,不输出任何内容。如果你等到你的视图完全准备就绪,然后编译输出,你就可以更多地控制诸如head标签之类的东西中包含的脚本和样式表。

以下是一个简单的例子,仅用于展示我所说的内容。正如我们在下面的问题中讨论的那样,您可以使用方法替换buildOutput()方法,而是指向一个代表您的视图的PHP文件,并返回script和{{1例如,URL。

stylesheet

http://codepad.org/Ny3Zxk5L