返回函数中更好的HTML?

时间:2013-02-15 14:50:13

标签: php html function ob-get-contents

我可以在字符串中编写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的影响吗?

4 个答案:

答案 0 :(得分:1)

您可以使用模板形式,其中HTML结构存储在带有占位符值的模板文件中,您可以在其中读取,并将占位符值替换为实际内容。

这样你只需要读一个字符串,做一堆'替换'来转换,然后返回结果。

答案 1 :(得分:1)

是和否,

这三个例子中的任何一个远远不是“保持php远离html”的目标。在他们看来,他们并没有比另一个更好。

将表示层与逻辑连接起来并不是一种好的做法 这两种解决方案都不是我们可以直接为初学者打电话的。最简单的学习曲线就是使用模板引擎,比如smarty。

http://www.smarty.net/

它可以帮助您使您的演示文稿远离代码。

但普遍接受的策略是MVC将软件分为3层。模型视图和控制器。本文简要解释了什么是mvc专注于php。

http://onlamp.com/pub/a/php/2005/09/15/mvc_intro.HTML

还有许多人认为更好的架构和实践,但这是我相信的基础知识。

答案 2 :(得分:0)

“还有另一种方法可以很好地保持PHP的PHP吗?”

  • 是的 - 你应该阅读MVC以及如何在PHP中实现它(例如使用Smarty

答案 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>