优缺点:用PHP编写HTML

3
我将我的HTML和PHP分开,这是MVC中良好的编程实践。然而,很多时候我会遇到有人直接在PHP文件中编写HTML的情况。
当讨论“不要这样做,这不是一个好的实践”时,我没有任何技术上的论据,除了“这不是一个好的实践”。
他们总是说,“我不必被细节牵绊。”
从技术上讲,这样做并不推荐吗?

我同意你的观点。所以模板也是一个 PHP 文件吗?你使用任何已知的 MVC 吗? - Jorge Pinho
2
人们会对此争论很多。将HTML和PHP混合在一起的问题在于难以重用代码,而且通常更难阅读和理解它。有很多方法可以做到这一点 - Twig(如Symfony中)和HAML是分离的极端方式。我认为只在视图中使用HTML,并将存在的PHP限制为ifforforeach就足够分离了。 - Dan Blows
1
没有对这个主题进行实际研究,我认为性能上没有区别。据我所知,唯一的问题是可读性。当HTML和PHP之间跳转时,它会使代码更难阅读和理解。 - Travesty3
将与演示有关的所有内容放在一个定义好的位置上,这样会更易懂、更易维护。仔细一看,这些并不是技术争论...因此是讨论的主题。在一个有不同组织和结构观点的团队中,就需要有人来制定规则。而“这不是一个好的做法”确实不是一个好的论据——肯定有场景,旧式可怕的单文件HTML-PHP混合设计是完全足够的。这当然是PHP的弱点,但也是它的优势,因为它允许两种方式。 - DerVO
是的,我总是使用MVC来开发所有的东西,所以这个问题。我认为HTML是视图,PHP是控制器/模型。我不认为混合/结合两个“层/语言”有逻辑。无论如何,感谢您的评论。 - Patrick Maciel
2个回答

4
不推荐将HTML和PHP混合编写在同一个文件中,因为过去的经验表明,当例行程序或脚本变得越来越长时,管理起来就越困难。如果需要在一个文件中处理HTML和PHP,你需要编写更多的内容,而将代码分成两个文件则不需要。这也导致在HTML和PHP的单一文件中编写的内容更多,从而导致代码更加复杂。
尽管有些程序员对于较大的代码块没有问题,并且对于在同一个文件中混用多种语言也没有问题,但这只是普遍情况。随着软件的逐渐复杂,独立思考如何模块化代码将变得更加重要,例如将视图与请求处理分离。
一般来说,可以在输出(显示)和处理之间画一条界线。处理将与输出层进行接口交互,而不是将两个任务放在一个脚本/例行程序中(处理和输出)。实际上,输出已被抽象化/规范化/简化,以便使输出代码能够独立工作。例如,处理将对象传递到输出层,而输出层将其转换为HTML(此处的“对象”含义非常广泛,可以是变量、数组或OOP对象)。
如果您正在与其他人共同开发,请共同决定绘制这些界限的位置,以便您们可以真正协同工作。重要的是要一起工作,而不是偏爱一种设计而牺牲与他人配合的可能性。如果您认为您的同事有错误,您们两个都需要讨论该问题。

这只是我的想法。每个系统都必须旨在团队的成长、维护或简单地增长。如果一切都按照这种方式计划,层次结构最好分开,这样就更容易找到东西了。谢谢。 - Patrick Maciel

3

我认为你可以这样考虑。

如果PHP代码与信息如何向用户显示相关,则可以将其放在视图中(如果使用MVC方法)或与HTML混合。有时,您需要小段的代码来按照您想要的方式显示信息,“如果日期已过,则以这种方式显示它,否则以那种方式显示它”。

在任何其他情况下,出于结构、易维护性、DRY等目的,您应避免将PHP与HTML混合。


恰好是我要写的。恭喜你的2k声望,伙计 :) - Madara's Ghost
@ChristoferEliasson 我同意你的观点,在某些情况下,为了返回错误/验证,PHP + HTML一起是有效的,但我仍然不完全同意,我认为PHP应该只做它们自己的工作,因为HTML是它的。无论如何,你做得非常好。谢谢。 - Patrick Maciel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接