结合PHP和HTML的首选方法?

Bri*_*n S 10 html php templates separation-of-concerns

我通过浏览phpBB2来学习PHP ,甚至向他们的数据库提交了一些mod,其他人下载并使用了这些mod.(我不相信phpBB2已经支持了phpBB3这么久了,所以v2 mods数据库不再存在.)

我最喜欢的关于phpBB的一个是他们的模板系统,它让编辑器完全分离HTML和PHP.PHP文件包含PHP:逻辑,数据库查询和激活模板.TPL文件包含模板:HTML,模板变量和专用HTML注释,以允许条件或重复块.

但是,每当我在网上看到某人的PHP代码时,它或者是一个使用单个函数等的小代码片段,或者PHP中充满了包含HTML的字符串(或者更糟糕的是,PHP与PHP散布在一起).phpBB是我看过的唯一一个实际上将语言和标记语言分开的PHP,向我建议很少有其他PHP代码库做这样的事情.

我想再次开始使用一些PHP,但这次它不会是一个phpBB论坛,它将在一个团队中.根据我的经验,PHP和HTML的分离是不常见的(如果我错了,请纠正我!).但是,我已经习惯了那个分界线,我讨厌阅读混合的PHP和HTML.

在PHP编程的"现实世界"中,首选方法是什么:

  • 带有HTML字符串的PHP文件
  • 用PHP块分解的HTML文件
  • PHP和HTML完全分开(我希望?)
  • 别的什么?

Bur*_*bas 7

如果要将PHP与HTML分开,可以使用模板引擎(如smarty http://www.smarty.net/).


Geo*_*ian 5

就个人而言,我认为没有理由在PHP已经是一个很好的解决方案的同时将模板系统/语言添加到其中。

我的首选方法是将显示与应用程序逻辑分开。这可以采用成熟的MVC框架的形式。但是,这也可能是您如何编写代码的简单问题。

扩张:

自从犯了将我的HTML插入大量的ASP代码的错误以来,我一直试图将页面逻辑与显示分开。在单个页面中,这意味着将所有页面逻辑放在顶部,将要显示的信息存储在变量中,然后在PHP文件底部的HTML中回显它们。显示在HTML部分中的唯一逻辑是显示逻辑。换句话说,简单的错误处理,if,循环等。基本上,与大多数模板化语言中的东西相同。

我之所以避免使用模板语言,是因为它是我需要担心的另一种语法形式。重点是什么?PHP提供了超出此目的所需的更多功能。

同时,您可以通过分离以下内容采用简单的MVC方法:

controller.php

<?php
// some application logic
$data['message'] = 'Hello, World.';

include 'view.php';

exit;
?>
Run Code Online (Sandbox Code Playgroud)

view.php:

<html>
<head>
<title>
A simple 'MVC' view
</title>
</head>
<body>
<p>
<?php

echo $data['message'];

?>
</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这并非没有缺点和问题。但是,如果您认为可以在应用程序逻辑和显示之间完全,清晰地分开,那您就错了。