这些是类定义
<?php
abstract class MyTemplate {
protected $arrayOfSpaces;
protected $arrayOfVariables;
protected $output;
protected abstract function __construct();
function outputHTML(){
echo $output; //Apparently, the problem is HERE. <<<<>>>>>
}
}
class MyTemplateMain extends MyTemplate {
function __construct(){
$this->output="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html>
<head>
</head>
<body>
I love Rock n Roll!!!
</body>
</html>";
}
}
?>
这是我启动此页面的地方
<?php
require_once("view/templates.php");
$page=new MyTemplateMain();
$page->outputHTML();
?>
但是,不起作用。只是显示一个空白页面,没有字符串我喜欢摇滚乐,它应该出现在身体里。
我确信有更好的方法来实现模板,但我只是想弄清楚为什么这个特定的例子不起作用
感谢任何帮助。感谢
PS:引号都是正确转义的,文件路径也可以
答案 0 :(得分:2)
你的语法很奇怪,试试这个
abstract class MyTemplate {
protected $arrayOfSpaces;
protected $arrayOfVariables;
protected $output;
public abstract function __construct();
function outputHTML(){
echo $this->output;
}
}
class MyTemplateMain extends MyTemplate {
public function __construct(){
$this->output="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html>
<head>
</head>
<body>
I love Rock n Roll!!!
</body>
</html>";
}
}
$page=new MyTemplateMain();
$page->outputHTML();
答案 1 :(得分:2)
改变:
function outputHTML(){
echo $output;
}
到:
function outputHTML(){
echo $this->output;
}
答案 2 :(得分:0)
尝试使用$base->output
代替$this->output
。
答案 3 :(得分:0)
确定。我不知道为什么,但现在它正在发挥作用。我重写了一段时间,所以即使是无意的,我也必须做得正确。这是代码,如果有人想要alook并比较版本。谢谢大家
abstract class MyTemplate {
protected $arrayOfSpaces;
protected $arrayOfVariables;
protected $output;
function outputHTML(){
echo $this->output;
}
}
class MyTemplateMain extends MyTemplate {
function __construct(){
$this->output="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html>
<head>
</head>
<body>
I love Rock n Roll!!!
</body>
</html>";
}
}