【发布时间】:2015-11-27 04:30:20
【问题描述】:
我的大师班具有打印网站各个部分的功能。我有一个打印主容器的函数,它是一个包含所有内容的 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> 之外打印的内容。如何修复此代码以实际打印其中的所有内容分区。
下面的屏幕截图显示了页面源内部问题的结果。红色光标显示应实际打印项目(以黄色突出显示)的位置。
如果需要显示更多代码,请说出来。
【问题讨论】:
-
print_content()是回显输出还是返回它? -
它有回声。当我把回报放在它上面时,它运作良好。但是,当我将 return 放入受保护的函数 print_navbar() 时,它不会打印任何内容。 (从那个函数)
-
正如@Tristan所说,您需要返回
print_content()的内容 -
导航栏的内容可能也会回显,所以在
print_content()中只需做一个输出缓冲区并在最后返回内容:ob_start();$this->print_navbar(); echo 'stuff'; $data = ob_get_contents(); ob_end_clean(); return $data; -
如果你把
$this->print_navbar()改成return,那么在这个方法中你需要echo $this->print_navbar();所以:ob_start(); echo $this->print_navbar(); echo 'stuff'; $data = ob_get_contents(); ob_end_clean(); return $data;