【发布时间】:2010-05-15 01:30:34
【问题描述】:
我正在使用一个文件 page.php 作为几个内容文件的 HTML 容器;也就是说,page.php 定义了页面的大部分常见结构,内容文件只包含每个页面唯一的文本。我想做的是在每个内容文件中包含一些 PHP 代码,这些文件定义了页面的元数据,例如其标题、要使用的横幅图形等。例如,内容文件可能看起来像这样(简化):
<?php $page_title="My Title"; ?>
<h1>Hello world!</h1>
文件名将作为 URL 参数传递给 page.php,如下所示:
<html>
<head>
<title><?php echo $page_title; ?></title>
</head>
<body>
<?php include($_GET['page']); ?>
</body>
</html>
这种方法的问题是变量在使用后才被定义,这当然是行不通的。输出缓冲似乎也无济于事。
我可以使用其他方法吗?我不希望将内容文件中的文本定义为 PHP heredoc 块,因为这会破坏我的文本编辑器中的 HTML 语法突出显示。我也不想在事后使用 JavaScript 重写页面元素,因为这些页面中的许多页面不使用 JavaScript,如果我不需要,我宁愿不将其作为依赖项引入。
【问题讨论】:
-
为什么 ob_* 函数不适合你?当你尝试时会发生什么?
-
ob_* 函数可以工作,但它们不会改变页面的布局方式——在定义之前 $page_title 仍然没有值(这应该是,我想)。