我可以在字符串中编写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的影响吗?
答案 0 :(得分:1)
您可以使用模板形式,其中HTML结构存储在带有占位符值的模板文件中,您可以在其中读取,并将占位符值替换为实际内容。
这样你只需要读一个字符串,做一堆'替换'来转换,然后返回结果。
答案 1 :(得分:1)
是和否,
这三个例子中的任何一个远远不是“保持php远离html”的目标。在他们看来,他们并没有比另一个更好。
将表示层与逻辑连接起来并不是一种好的做法 这两种解决方案都不是我们可以直接为初学者打电话的。最简单的学习曲线就是使用模板引擎,比如smarty。
它可以帮助您使您的演示文稿远离代码。
但普遍接受的策略是MVC将软件分为3层。模型视图和控制器。本文简要解释了什么是mvc专注于php。
http://onlamp.com/pub/a/php/2005/09/15/mvc_intro.HTML
还有许多人认为更好的架构和实践,但这是我相信的基础知识。
答案 2 :(得分:0)
答案 3 :(得分:0)
简单的想法让两者分开:
//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>