我们为什么要将PHP与HTML分开

时间:2013-12-18 17:04:03

标签: php html

我对编程很新,我知道如何将PHP与HTML分开,但我想知道是否有任何区别

这样:

<?php $rand="I love apples" ?>
<h1>This is a title</h1>
<div>
    <p>This is a paragraph</p>
    <?php echo"The variable contains the string $rand"; ?>
</div>
?>

与此相比:

<?php
    echo "<h1>This is a title</h1>";
    echo "<div>";
    echo "<p>This is a paragraph</p>";
    echo "The variable contains the string $rand";
    echo "</div>";
?>

在性能等方面,从HTML代码中拆分PHP代码和在php中回显整个页面之间是否有任何区别?

6 个答案:

答案 0 :(得分:8)

最佳做法是不要从HTML中分离PHP,最佳做法是从标记中分离逻辑

编码风格也很重要。 正确的行缩进。使用echo "</div>";代替echo"</div>";valid HTML不将变量放入引号

echo "The variable contains the string $rand";

更好(为什么?请参阅下面的评论):

echo "The variable contains the string ",
     $rand,
     " :-)";

您的整个项目只需通过改进代码,编写简洁,可读和可维护的内容即可获得更高的质量和价值。想象一下,如果要更改文本,则必须添加或更改大量echo es。

代码风格指南&gt; PearPSRZend&lt;

encourage developers to keep their code readable, valid and cross-browser compatible

答案 1 :(得分:5)

问题不是表现,而是可读性,更重要的是可维护性

在一个地方进行所有处理,在另一个地方进行所有输出(即逻辑演示文稿),意味着您可以更轻松地更改一个对他人的影响太大了。

对于您的具体问题,由于上面列出的原因,目前为止首选方法更为可取。

答案 2 :(得分:1)

从表面上看问题,有两个原因可以立即浮现在脑海中:

  1. 假设您正在使用智能编辑器,回显所有HTML将导致您丢失语法突出显示,因此您不太可能发现错误。
  2. 因为所有内容都在PHP字符串中,所以现在您必须担心转义所有其他特殊字符。尝试用一个字符串吐出一些Javascript,让我们知道它有多么有趣。
  3. 但是,当大多数人说“将PHP与HTML分离”时,他们指的是将逻辑与观点分开的概念。这意味着不要在html页面中放置复杂的业务逻辑,计算和数据库调用。将这一切保留在纯PHP文件中,并使您的html文件包含仅用于吐出数据的最小PHP。

答案 3 :(得分:0)

我认为你的例子并不是一个很好的例子,因为为什么你应该把它分开。

您不仅应该将HTML与应用程序的演示文稿,呈现或UI部分分开,而是清洁编码 separation of concerns 。这将确保您获得干净,易于阅读的代码并使您的应用程序得以维护。

以Wordpress为例,它是一个非常混乱的PHP和HTML。他们甚至可以在应用程序的表示层中执行SQL查询,如果你甚至可以在这个东西中绘制表示和其他逻辑之间的边界线。

你总是要在你的HTML中输出一些动态内容,但是真的会尝试减少它以回显变量并在那里有一些输出格式化辅助对象。所有业务逻辑应该在其他地方,而不是在“模板”或其他任何你称之为包含输出的文件。

例如,查看MVC pattern,它可以让您清楚地知道如何以及为什么要分开内容。

答案 4 :(得分:0)

在我看来,这取决于与PHP逻辑相比正在进行的HTML格式化的级别。没有更多&amp;没什么。将纯HTML作为纯HTML或PHP读取就像直接PHP一样简单。当它们全部混杂在一起时 - 一些模板系统处理它的方式 - 阅读和阅读是一个合乎逻辑的头痛问题。调试。所以我为了自己的理智而错误地将HTML放在PHP中。

如果有的话,不清楚性能优缺点。但是可以向您保证,在20多年的时间里,由于PHP中嵌入了太多的HTML,我从未让服务器速度变慢

就个人而言,我会像这样格式化你的代码示例:

<?php
    echo "<h1>This is a title</h1>"
       . "<div>"
       . "<p>This is a paragraph</p>"
       . "The variable contains the string $rand"
       . "</div>"
       ;
?>

我喜欢这种方法,因为有一个echo - 它可以清楚地说明发生了什么 - 其余的HTML只是通过.个字符连接起来。

此外,请记住,编程中的所有格式都比任何事情都更有益于人类。计算机只需要查看命令,因此如果您想要成为机器的完美音调,只需要没有任何空格或格式的代码。哎呀,停止使用完整的单词&amp;只需使用1个字母的变量!哦,等等,这就是过去几天的表现。

现在编译器&amp;缓存系统旨在采用人类可读的代码和使机器优化。

这就是说:你应该为可读性而编码。你的逻辑。没有更多&amp;没什么。

答案 5 :(得分:0)

<?php $rand="I love apples" ?>
<h1>This is a title</h1>
<div>
    <p>This is a paragraph</p>
    <?php echo"The variable contains the string $rand"; ?>
</div>
?>

以上看起来很难分开。这就是php / html分离的样子:

<?php 
$rand="I love apples"; 
?>
<h1>This is a title</h1>
<div>
    <p>This is a paragraph</p>
    <p>The variable contains the string <?=$rand ?></p>
</div>

性能方面,这不是问题,但它会使程序员更容易阅读代码,因此需要HTML / PHP分离实践。理想情况下,如果您只打算使用一个脚本,请将所有PHP代码保持在最顶层。此外,分离的另一个原因是IDE编辑器可以很容易地格式化HTML。如果PHP标记内部的HTML标记以PHP外部的HTML标记结尾,则HTML无法正确格式化。例如:

<div><p>And it offers so much <?php echo "$features</p>
<h2>Proven Ideas";?></h2>
<p>More details ahead</p>  
</div>

以上操作会运行得很好,但IDE html格式化程序可能会与缺少的结束标记混淆,并且不会格式化,使程序员更难以阅读它们。