6

我正在编写我的第一个真正的 PHP 网站,并且想知道如何使我的代码对自己更具可读性。我使用的参考书是 PHP and MySQL Web Development 4th ed。

上述书给出了三种分离逻辑和内容的方法:

  • 包含文件
  • 函数或类 API
  • 模板系统

我还没有选择其中任何一个,因为围绕这些概念思考我需要一些时间。然而,我的代码已经变成了前两个的混合体,因为我只是在这里复制粘贴并随时修改。

在展示方面,我所有的页面都有这些共同元素:页眉、顶部导航、侧边栏导航、内容、右侧边栏和页脚。

书中基于函数的示例表明我可以使用这些显示函数来处理所有演示示例。所以,我的页面代码将是这样的:

display_header();
display_navigation();
display_content();
display_footer();

但是,我不喜欢这样,因为书中的示例将这些打印语句与 HTML 和 PHP 混合在一起,如下所示:

echo "<tr bgcolor=\"".$color."\"><td><a href=\"".$url."\">" ...

我宁愿在中间有一些 PHP 的 HTML,而不是相反。

我正在考虑制作我的页面,以便在页面的开头,我将从数据库中获取所有数据并将其放入数组中。我还将获取变量的数据。如果这些过程中有任何错误,我会将它们放入错误字符串中。

然后,在 HTML 代码中,我将使用 foreach 遍历这些数组并显示内容。在某些情况下,将显示一些变量。如果设置了错误变量,我将在适当的位置显示它。

(作为旁注:我不明白的是,在大多数示例代码中,如果某些数据库查询或诸如此类的错误给出了错误,总是有:

else echo 'Error';

这让我感到困惑,因为当示例代码出现错误时,有时甚至在 HTML 开始之前就会回显它......)

对于使用过 ASP.NET 的人,我已经有点习惯了代码隐藏文件和 lblError 并且我正在尝试在这里做类似的事情。

我还没有想到的是,我怎么能做到“先做逻辑,然后做展示”的事情,这样我就不必在所有页面中复制导航逻辑和导航展示。

我应该做一些包含文件还是我可以在这里使用函数但有点不同?有没有什么好的文章可以更彻底地解释这些分离表示和逻辑的“风格”。我的书只有一段关于这些东西。

我在想的是我在这里谈论一些进行 PHP 编程的概念或方法,但我还不知道它们的术语。

我知道这不是一个直截了当的问题,我只需要一些帮助来组织我的想法。

4

3 回答 3

4

永远不要用 PHP 回显 HTML。而是将其内联(没有邪恶的短标签)写为

<tr class="<?php echo $myclass; ?>">

帮助分离逻辑/视图的其他选项是使用像CodeIgniter这样的 PHP 框架。

我会放弃这本书,而是更多地专注于学习核心 PHP 技能,如函数、类等。然后开始玩几个流行的框架

作为旁注:我不明白的是,在大多数示例代码中,如果某些数据库查询或诸如此类的错误给出了错误,总是有:

那是因为他们错误地显示了错误。您应该将错误存储在会话中,然后将它们显示在页面上(也清除它们)或使用该error_log函数将它们放入错误日志中。error_log("Something happened in MyClass");

我还没有想到的是,我怎么能做到“先做逻辑,然后做展示”的事情,这样我就不必在所有页面中复制导航逻辑和导航展示。

以MVC方法思考事物。您首先调用控制器(逻辑)。它弄清楚需要什么。如果它需要来自数据库的数据,它会调用一个模型并请求它。然后它对其进行格式化、添加其他数据、运行其他查询,然后将其传递给视图。

于 2010-06-15T14:27:12.317 回答
1

听起来像模板引擎是您正在寻找的 - 向谷歌询问很多结果。就个人而言,我非常喜欢smarty

(扔掉那本书,听起来好像……很旧)

于 2010-06-15T14:26:08.600 回答
1

MVC(模型视图控制器)听起来可能适合您的需求。你可以在这里阅读。

于 2010-06-15T14:27:48.333 回答