分离php和html ...为什么?

时间:2009-05-31 08:56:47

标签: php html formatting

所以我在各种网站,网页以及有关分离php和html的问题上看过一些评论。

我认为这意味着这样做:

<?php

myPhpStuff();

?>

<html>

<?php

morePhpStuff();

?>

而不是:

<?php

    doPhpStuff();

    echo '<html>';

    ?>

但为什么这很重要?这样做是非常重要还是偏好?


似乎当我开始使用PHP时,在while循环中突破PHP会导致错误。也许这不再是真的,或者从来没有。


我用这个概念做了一个小例子,但对我来说它似乎太乱了:

<?php

$cookies = 100;
while($cookies > 0)
{
    $cookies = $cookies -1;
?>
    <b>Fatty has </b><?php echo $cookies; ?> <b>cookies left.</b><br>

<?php

} 

?>

是否存在将PHP内部包含在HTML中更好的实例?

<?php

$cookies = 100;
while($cookies > 0)
{
    $cookies = $cookies -1;

    echo'<b>Fatty has </b> '.$cookies.' <b>cookies left.</b><br>';
} 

?>

11 个答案:

答案 0 :(得分:16)

当人们谈论分离PHP和HTML时,他们可能指的是将网站的演示文稿与用于生成它的代码分开的做法。

例如,假设您有一个DVD租赁网站,并在主页上显示了可用DVD的列表。您需要做几件事:从数据库获取DVD数据,提取和/或格式化该数据,并可能混合来自多个表的一些数据。将其格式化为输出,将DVD数据与HTML结合起来,创建用户将在浏览器中看到的网页。

将HTML生成与其余代码分开是一种很好的做法,这意味着您可以轻松更改HTML输出(演示文稿),而无需更改业务逻辑(读取和操作数据)。反之亦然,您可以更改逻辑甚至是数据库,而无需更改HTML。

这种常见模式称为MVC (model view controller)。 您可能还想查看Smarty库 - 它是一个广泛使用的PHP库,用于分离表示和逻辑。

答案 1 :(得分:8)

让我们明确什么不是分离

  • 你从php模式切换到html模式
  • 使用print或echo语句写出html代码
  • 你在html文件中使用小的php snipplets

如果你这样做,那么根本没有分离,无论你是从php转移到html块还是以其他方式执行它并将php代码放入html。

看看一个好的模板引擎,手册中的“为什么使用....”部分有很多原因。我特别建议www.smarty.net http://www.smarty.net/whyuse.php

现在,您将回答所有问题。

答案 2 :(得分:4)

将应用程序逻辑与项目中的表示逻辑分开非常重要。好处包括:

  • 可读性:如果不混合PHP和HTML,您的代码将更容易阅读。此外,如果HTML以PHP字符串存储和转义,HTML将变得难以阅读。
  • 可重用性:如果您在PHP代码中对HTML字符串进行硬编码,则代码将非常适合您的项目,并且无法在以后的项目中重用您的代码。另一方面,如果您编写一次只执行一项任务的小函数,并将HTML放入单独的模板文件中,则可以在以后的项目中重用您的代码。
  • 在团队中工作:如果您在包含开发人员和设计人员的团队中工作,则应用程序逻辑和演示模板的分离对两者都有利。开发人员将能够在不担心演示文稿的情况下处理应用程序,而设计人员(他们不一定非常了解PHP)将能够创建和更新模板而不会弄乱PHP代码。

答案 3 :(得分:4)

对于包含大量HTML的页面,将PHP代码嵌入页面可能更容易。这是PHP背后的第一个意图之一。无论如何,当你开发一个具有大量逻辑,不同类型的连接,数据操作的应用程序时......如果你想将它们嵌入到向用户显示的相同页面中,你的PHP代码会变得太复杂。然后开始维护的故事。您将如何更改代码中的内容,修复错误,添加新功能?

最好的方法是将您的逻辑(大部分代码都是PHP)与您的页面文件(大多数代码是HTML,XML,CSV,......)分隔在不同的文件(甚至是目录)中。 / p> 多年来,这一直是开发人员关注的问题,并且有建议来处理这些一般性问题,即设计模式。

由于不是每个人都有经验,并且可以将这些设计模式应用到他的应用程序中,一些经验丰富的开发人员创建了Frameworks,这将有助于其他开发人员使用所有知识和经验来听取该框架。

当你看看toady最常用的PHP框架时,你会发现所有这些框架都将代码放入特殊目录中的PHP类中,进行配置,并且....在这些文件中都没有看到一行HTML。但是有一些特殊文件用于向用户显示结果,并且它们有很多HTML,因此您可以将PHP值嵌入到这些HTML页面中以向用户显示。但请记住,这些值不是在同一页面上计算的,它们是很多其他PHP代码的结果,用其他没有HTML的PHP​​文件编写。

答案 4 :(得分:3)

我发现将应用程序逻辑与视图文件分开(使用带有MVC的CodeIgniter框架很好),因为它使代码看起来相对整洁和易懂。我还发现,将两者分开可以减少PHP错误的余量,如果HTML元素与PHP分离,那么可以出错的PHP数量较少。

最终我认为这取决于偏好,但我觉得分离有以下优点:

  • Tidier Code
  • 较少的错误保证金
  • 易于理解
  • 更容易更改HTML元素
  • 更容易更改应用程序逻辑
  • 加载速度更快(HTML不是来自Parser-&gt;浏览器直接进入浏览器)

但是有些缺点可能是:

  • 它只适用于PHP5(我相信,可能是错的,如果需要可以更正)
  • 可能不是一个人习惯的
  • 如果做得不正确不整洁(没有缩进等,但这与任何事情都是一样的)

但正如你所看到的,优点超过了缺点。尽量不要混淆两者,一些分离和一些整合 - 这可能会让你自己和与你合作的其他开发者感到困惑。

我希望这会有所帮助。

答案 5 :(得分:2)

第一种方法的好处(分离PHP和HTML):

  • 您无需转义字符

  • 代码编辑也是可能的 突出显示/缩进标记。

  • 可以说更容易阅读

  • 此方法没有任何缺点, 与第二种方法相比。

答案 6 :(得分:2)

功能上:它们都会起作用,所以最终它是一种偏好。

然而,您可能会认为评论也是一种偏好,您的代码在没有评论的情况下编译和运行完全相同。然而,大多数人会同意评论对于编写和维护良好代码至关重要。我认为这是一个类似的主题。从长远来看,如果两者分开,它将更容易阅读和维护代码。

重要吗?我会说是的。

答案 7 :(得分:1)

我开始:第一个你可以在WYSIWYG编辑器中打开,仍然看到一些标记,这可能使它更容易维护。

答案 8 :(得分:1)

它说你把它放在echo''它首先由编程语言处理然后发送到浏览器,但如果你直接把没有php的html代码放在那里,那么代码将加载更快,因为没有编程

正如上面提到的那样,第二个原因是你应该把你的'大编程代码'分开存储在html代码中,并且在html代码中只是调用一些打印结果,比如'echo $ variable'。或者像Smarty一样使用模板引擎(就像我一样)。

祝你好运, 亚历。

答案 9 :(得分:1)

哎哟!

您问题中的所有示例都完全无法阅读。我会说,你自己和那些可能会非常喜欢阅读你的代码并使用各种模板引擎的人,比如Smarty。设置和使用非常简单,它会将您的代码与演示文稿分开。它不需要你把所有东西放在类中,它只是确保你的逻辑在一个文件和演示文稿中 - 在另一个中。

答案 10 :(得分:0)

我不知道如何在php中但在asp.net分离中具有以下优点。 1.分离的代码易于理解和开发 2.设计人员可以在html中工作,同时开发人员可以编写代码