为什么我们要把PHP和HTML分开

为什么我们要把PHP和HTML分开,php,html,Php,Html,我对编程相当陌生,我知道如何将PHP与HTML分开,但我想知道这样做是否有任何区别 这: 这是一个标题 这是一段 ?> 与此相比: <?php echo "<h1>This is a title</h1>"; echo "<div>"; echo "<p>This is a paragraph</p>"; echo "The variable contains the string $rand"

我对编程相当陌生,我知道如何将PHP与HTML分开,但我想知道这样做是否有任何区别

这:


这是一个标题
这是一段

?>
与此相比:

<?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>";
?>


在性能等方面,将PHP代码从HTML代码中分离出来与仅用PHP重复整个页面之间有什么区别吗?

问题不在于性能,而在于可读性,更重要的是,可维护性

在一个地方进行所有处理,在另一个地方进行所有输出(即逻辑表示),这意味着您可以更轻松地更改其中一个,而不会对另一个产生太大的影响


对于您的具体问题,由于上面列出的原因,到目前为止最好采用顶部方法。

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

  • 假设您使用的是智能编辑器,回显所有HTML将导致您丢失其语法突出显示,因此您不太可能捕获错误
  • 因为所有内容都在PHP字符串中,所以现在您必须担心转义所有其他特殊字符。尝试抛出一些包含字符串的Javascript,让我们知道这有多有趣

  • 然而,当大多数人说“将PHP与HTML分离”时,他们指的是将逻辑与视图分离的概念。这意味着不要将复杂的业务逻辑、计算和数据库调用放在html页面中。将所有内容保存在纯PHP文件中,并让html文件包含仅用于输出数据的最小PHP。

    最佳做法不是将PHP与html分离,最佳做法是将逻辑与标记分离

    同样重要的是编码风格正确的行缩进。使用
    echo'而不是
    echo”“未将变量放入引号中

    echo "The variable contains the string $rand";
    
    更好(为什么?见我下面的评论):

    通过改进代码、编写干净、可读、可维护的代码,您的整个项目获得了很多质量和价值。假设您要更改文本,则必须添加或更改大量的
    echo
    es

    代码样式指南>,
    ,我认为你的例子不是一个很好的例子,它清楚地说明了为什么你应该把它分开

    您不仅应该分离HTML,还应该分离应用程序的表示、呈现或UI部分的原因是干净的编码。这将确保您获得干净、易于阅读的代码,并使您的应用程序成为maintable

    以Wordpress为例,它是php和HTML的完美结合。它们甚至在应用程序的表示层中执行SQL查询,如果您甚至可以在表示和其他逻辑之间画一条边界的话

    您总是需要在HTML中输出一些动态内容,但真正尝试将其简化为回显变量,并在其中包含一些输出格式帮助对象。所有业务逻辑都应该在其他地方,只是不在“模板”或任何您将调用包含输出的文件的地方


    看一看,例如,它让您很好地了解了如何以及为什么要将事情分开。

    在我看来,这取决于正在进行的HTML格式设置与PHP逻辑的级别。不多不少。将纯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的其余部分只是通过
    字符连接起来

    此外,请记住,编程中的所有格式对人类的好处比任何东西都多。计算机只需要看到命令,所以如果你想成为一台完美的机器,只需要不带空格或格式的代码。见鬼,停止使用完整单词&只需使用1个字母的变量!哦,等等,这就是你们过去的做法

    如今,编译器和缓存系统的设计目的是获取人类可读的代码,并使其实现机器优化

    这就是我要说的:你应该为可读性和逻辑性编写代码。不多不少。

    
    
    <?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>
    
    而且它提供了很多
    更多详情请参见下文


    上面的代码运行得很好,但是IDEHTML格式化程序可能会与缺少的结束标记混淆,并且不会格式化,这会使程序员更难读取它们

    一个主要区别的可能重复是任何人都必须看代码。维护通过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>
    
    <div><p>And it offers so much <?php echo "$features</p>
    <h2>Proven Ideas";?></h2>
    <p>More details ahead</p>  
    </div>