我有大师班,有打印网站各个部分的功能。我有一个打印master-container的函数,它是一个包含所有内容的div。 (html / body / #master-container /(所有网站元素))。在该函数内部,我有一个抽象保护函数,用于在网页(子类)上生成内容#master-container。这是大师班中代码的一部分:
...
# print content
abstract protected function print_content();
# print master-container
public function print_master_container(){
$output = '
<div id="master-container">
'.$this->print_content().'
</div>
';
echo $output;
}
...
这是子类中的代码:
class Starting_page extends Core {
public function print_content(){
$this->print_navbar();
echo 'test';
}
}
...
现在问题是它会打印所有内容(字符串'test'和$this->print_navbar()
之外的函数<div id="master-contaiener></div>
打印的内容。如何修复此代码打印div内的所有内容。
屏幕截图显示了页面源代码中的问题结果。红色光标显示实际应打印的项目(以黄色标出)。
如果需要显示更多代码,请说明。
答案 0 :(得分:1)
正如评论中的好人所说,问题在于使用echo
代替return
的具体方法。但是,当使用return
时,根本就没有输出。然后@Rasclatt也为此提出了解决方案;
class Starting_page extends Core {
public function print_content(){
# output buffering start
ob_start();
# print navbar
$this->print_navbar();
# declare output buffering content
$output = ob_get_contents();
# add more output data
$output .= 'other content';
# end output buffering and return it
ob_end_clean();
return $output;
}
}
值得注意的是$this->print_navbar()
仍然使用echo
来打印输出。如果使用return
,则在调用此方法时应添加前缀echo
。