1

我可以在字符串中编写 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

4 回答 4

1

是与否,

这三个示例中的任何一个都远远超出了“让 php 远离 html”的目标。在他们之中,他们并不比另一个更好。

将表示层与逻辑保持连接并不是一种好的做法。
对于初学者来说,这两种解决方案都不是我们可以直截了当的。学习曲线较短的最简单方法就是使用模板引擎,比如 smarty。

http://www.smarty.net/

这将帮助您使您的演示文稿远离您的代码。

但普遍接受的策略是 MVC 将软件分成 3 层。模型视图和控制器。这篇文章对什么是 mvc 专注于 php 做一个简单的解释。

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

还有其他许多人认为更好的架构和实践,但这是我认为的基础。

于 2013-02-15T14:58:44.457 回答
1

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

这样你就只是读取一个字符串,做一堆“替换”来转换,然后返回结果。

于 2013-02-15T14:52:49.893 回答
0

“有没有另一种方法可以很好地使 HTML 不受 PHP 影响?”

  • 是的 - 你应该阅读MVC以及如何在 PHP 中实现它(例如使用Smarty
于 2013-02-15T14:53:04.433 回答
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>
于 2013-02-15T15:02:13.170 回答