我可以在字符串中编写HTML代码并返回它,但它看起来总是有点乱。有什么更好的解决方案吗?
示例1-换行HTML
用HTML为每一行添加新行。一种非常混乱的HTML代码编写方式。
function my_function()
{
$html = '<div class="hello">';
$html .= 'A very long text';
$html .= '</div>';
return $html;
}
示例2-HTML块
编写HTML代码仍然是一种混乱的方式。另一个缺点是更难写出"引用"字符。
function my_function()
{
$html = '
<div class="hello">
A very long text
</div>';
return $html;
}
示例3-ob_get_contents
我可以使用ob_get_contents。它将我的PHP与HTML分离开来,很好!但我读到这是糟糕的表现。
function my_function()
{
ob_start();
?>
<div class="hello">
A very long text
</div>';
<?php
$html = ob_get_contents();
ob_end_clean();
return $html;
}
问题
有没有其他方法可以很好地将HTML与PHP隔离开来?
您可以使用一种模板形式,其中HTML结构存储在带有占位符值的模板文件中,您可以在其中读取占位符值,然后用实际内容替换占位符值。
这样,您只需读取一个字符串,执行一系列"替换"来进行转换,然后返回结果。
是和否,
这3个例子中的任何一个都远远没有达到"让php远离html"的目标。在这里面,他们不会比其他人学得更好。
保持表示层与逻辑的连接被认为不是一种好的做法
对于初学者来说,这两种解决方案都不是我们可以直接称之为的。对于较短的学习曲线,最简单的方法就是使用模板引擎,比如smarty。
http://www.smarty.net/
这将帮助您使演示文稿与代码保持一定的距离。
但通常接受的策略是MVC将软件分为3层。模型视图和控制器。本文简单地解释了什么是以php为中心的mvc。
http://onlamp.com/pub/a/php/2005/09/15/mvc_intro.HTML
许多人认为还有其他架构和实践更好,但我相信这是最基本的。
"有没有其他方法可以很好地将HTML与PHP隔离开来?"
- 是的-你应该阅读MVC以及如何在PHP中实现它(例如使用Smarty)
将两者分开的简单想法:
//php function
function stuff(){
$arr = array();
$arr['text'] = 'A very long text';
$arr['class'] = 'hello';
return $arr;
}
HTML页面:
<html>
<?php $thing = stuff(); ?>
<div class="<?php echo $thing['class']; ?>">
<?php echo $thing['text']; ?>
</div>
</html>