我正在开发一个网络应用程序,我遇到了模板化问题。问题涉及在php对象中生成html代码。代码如下:
<?php class abcHtml {
function prepare() { ?>
<!DOCTYPE html>
<html>
<head>
<?php echo $this->meta; ?>
</head>
<body>
<div id="bg">
<div id="container_wrapper">
<?php echo $this->cont; ?>
</div>
</div>
</body>
</html>
<?php }} ?>
目标是拥有一个包含最干净的HTML代码的php文件(不想使用任何框架)。
<?php
class abc extends abcHtml
{
protected $meta;
protected $cont;
public function render(){
return parent::prepare();
}
public function setMeta($meta){
$this->meta = $meta;
return $this;
}
?>
这个类继承了abcHtml,可以添加不同的html模块。问题是,当调用render()时,返回的html代码以正确的顺序记录,$ meta和$ cont变量中的html代码出现在prepare函数内的html之前。
例如:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="public/css/base_style.css"/>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="bg">
<div id="container_wrapper">
</div>
</div>
</body>
</html>
这个问题显然意味着php首先运行php代码,然后附加html。有解决方案可以解决这个问题吗?