/**
* 测试方法
*/
protected function getHtml()
{
$tpl = $this->pageletDir.$this->plTemplate;
$html=include($tpl);
return $html;
}
protected function getHtml()
{
$tpl = $this->pageletDir.$this->plTemplate;
ob_start();
include($tpl);
$html=ob_get_contents();
ob_end_clean();
return $html;
}
之前对于include方法包含模板文件的处理不是很清楚,也就对上面的第二种代码产生过疑问,认为为什么不用第一种方法?
说明:模板内容就是普通的html。
试验后发现:第一种方法并不能帮助我们完成想要的包含模板的功能,$html不是加载后的模板内容,而是 1 。
先放下问题,来看看php手册上的例子:
return.php
<?php
$var = 'PHP';
return $var;
?>
noreturn.php
<?php
$var = 'PHP';
?> testreturns.php
<?php
$foo = include 'return.php';
echo $foo; // prints 'PHP'
$bar = include 'noreturn.php';
echo $bar; // prints 1 ?>
$bar 的值为 1 是因为 include 成功运行了。注意以上例子中的区别。第一个在被包含的文件中用了 return 而另一个没有。
如果在包含文件中定义有函数,这些函数不管是在 return 之前还是之后定义的,都可以独立在主文件中使用。
这下明白了吧? 对于include的使用又可以增进一步了!
所以在包含模板时,一般情况下,我们都要使用最开始两个例子的第二个:使用输出控制函数来进行模板的处理。