仅使用PHP echo语句编写HTML标记是一种不好的做法吗?

3

工作中有个人几乎都是使用echo语句来编写他的html标记。这看起来非常干净,我很喜欢它,但我记得听说这是一个不好的做法,因为当你需要编写大量标记时会变得有点繁琐。那么什么是最佳实践呢?


1
你知道 HTML/PHP 上下文切换是什么吗? - Jon Black
是的,这意味着您在编写模板时主要使用HTML,在编写控制器或模型时主要使用PHP(假设您正在使用某种MVC)。 - JayD3e
7个回答

7
好的,根据问题的答案,我认为应该提供我的意见。
首先,这取决于项目。就我个人而言,我使用PHP作为我的模板引擎,而不是第三方工具。因此,我将视图逻辑存储在“模板”中,它只是php标记,其中确实使用了一些echo语句,但是echo语句只会输出相关数据而不是HTML代码。如果正确使用,从PHP中进出并不是不好的做法。
话虽如此,在“模板”文件中操作HTML要容易得多,因为HTML独立存在,无需担心引号问题(我知道heredoc可以解决这个问题,但在heredoc中进行foreach循环以显示数据有点困难)。因此,我的建议是为您的视图逻辑创建一个模板文件夹/文件,并使用短开标签(如果您想启用它们/冒险客户没有启用它们)或使用<?php echo $data; ?> 在文件中输出数据并在需要时包含它。
如果这听起来令人困惑,请原谅。但这是我喜欢的方法,因为只有10个echo显示数据与100个同时显示HTML和数据相比看起来更美观,也更容易操纵/调试。

这里有很多有用的答案,但我个人最赞同这个。我倾向于仅将模板用于标记(尽可能保持一致),并将控制器/模型用于PHP。我只是觉得我的同事写的代码非常干净,所以很好奇。这可能是因为他主要负责我们项目的JavaScript部分,只需要编写少量的标记段落。 - JayD3e
我想强调一下,在 PHP 中,短标签现在已经被废弃。 - Gab

4

除非你有成百上千行的标记,否则我认为这是微观优化。也就是说,HEREDOCechoprint或在PHP标记之间并不真正重要。

最终,关键在于哪种方式对你或你的团队来说更容易维护。


3

这不是一种必然的坏习惯。只要你的代码易读性好,就可以这样做。

如果你的项目变得更加庞大,我建议使用模板引擎(例如smarty.net)。


2

我经常读到/听说,从PHP中删除标记比切换进出预处理器更有效率。

毕竟,这就是HEREDOC的用途。一系列大量的echo语句可能不如一个较大字符串上的echo语句好。


最多只是微小的优化。你所能得到的改进范围只在毫秒级别上。 - ircmaxell
除非您每秒服务数千个页面,否则速度提高并不值得,但是无需记住转义引号等内容节省的开发人员时间确实很重要,并且使“文本墙”更容易阅读。在几乎所有情况下,HEREDOCs都更加方便,不使用它们几乎是犯罪行为。 - Marc B

1

我认为最佳实践是简化您的代码。如果您有大量可能被重复使用的Echo语句,请将它们提取到单独的PHP文件中,并使用php require语句包含该常见代码,以便您查看的主文件更简单。即使它们不能被重复使用,但它们是静态的且不应更改,请将它们拆分出来。没有必要在页面上添加仅是噪音的信息。


0

我把所有的HTML代码都放在不同的echo中,我觉得这样做没有任何问题。


0

如果考虑到将来可能需要更改技术(例如从php到asp.net或ruby on rails),那么这似乎是一种不好的做法。看起来关注点分离被抛到了窗外。


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