我一直在开发用于可视化某些数据的程序。我的程序从MySQL数据库获取特定输入,并绘制一些图形(libchart库),创建一些表等。
我的问题是,现在它在那里是一个代码地狱。我大约有7个php文件(索引,图形页面,画廊等),它们全部都带有HTML / CSS和PHP / SQL代码(其中一些只是具有php扩展名,但内部只有HTML)。我暂时没有阅读和理解该项目的问题,但是我想如果有人尝试过,他可能会头疼。另外,像这样的连续编程是不切实际的,因为将来该项目可能不容易扩展。
您对如何成功将HTML / CSS与PHP / SQL分开有任何建议吗?我不想使用框架,因为我没有做任何需要用户输入,会话处理等的工作。我只是运行一些查询并使结果可视化。我在这里主要谈论的是架构,如果适用的话,也许是一个可以帮助我的脚本(我已经读过Smarty,但不确定是否正是我所需要的)。
您对如何成功将HTML / CSS与PHP / SQL分开有任何建议吗?
恭喜您了解如何改善代码。这是前提,您需要进行改进,而且话题很长。因此,您的意志至关重要。
我从轻开始,然后尝试给出一些提示。当您缺少经验时,请寻找一个起点,最有可能的是下面列出的最后一个。但首先要注意的是:
为了使某些东西彼此分离,您需要具有一些分离的代码:
[HTML/CSS/PHP/SQL] [HTML/CSS] <--> [SEPARATOR] <--> [PHP/SQL]
这里的 分隔符 实际上也是PHP代码,但是我想您明白了。
如您所见,只有 Separator 与 HTML / CSS 和 PHP / SQL 对话。
因此, HTML / CSS 和 PHP / SQL都 需要与 Separator (两者之间的界线)建立接口才能使此工作有效。
通常,在程序中,您会传递处理过的数据。数据是非常动态的,并且可能具有复杂的复杂性,尤其是如果您将数据传递给应该正确格式化的输出例程。
如何编写这样的 分隔符 (或多个 分隔符) 有多种方式。您可以对软件进行 分层, 也可以提供可以在其 领域 或 领域 中发挥作用的 组件 。例如,您有一个 数据库层 或 数据库组件 ,负责与数据库的交互。
或者,您有一个 模板引擎 ,负责将您的字符串和数组放入一些可读的HTML中。
简而言之,这是软件设计的面食理论:
就像我们在生活中吃不同的面食一样,在编程时,我们也需要处理所有这些不同类型的代码,并且随着时间的流逝,我们会发展出自己喜欢的口味。小时候我们很饱,但是随着时间的流逝,我们开始自己做饭并改变食谱。
因此,我认为您不希望在接下来的几周内吃掉 很多很棒的MVC Framework X 只是一个好点,因为有人告诉您这是现在就吃的方式。在吃东西之前先品尝一下,对不对?更不用说快餐了,您知道像这些带包装的酱汁的面条-只加水。嗯
我不知道您的输出需要什么数据,什么是输入。以下是一些输出HTML / CSS并与MySQL数据库交互的应用程序的重构技巧。这不是一个完整的列表,说明只能大致概述一些想法:
style
将业务逻辑从HTML中移出 。HTML和您的代码都可以成为野兽,因此最好将它们分开。他们倾向于相互竞争,并且两者都很强大,因此在您开发应用程序时斗争会一直持续下去,这会使您分心于需要做的工作。 考虑一下您是否需要在应用程序中具有复杂的输出,或者是否可以仅传递带有子元素的数组(键是var,var可以包含字符串或数字或另一个var- array)。通常,只需要将复杂的数据传递到 视图 或 模板即可 。然后,您的HTML仅需要回显一些数组成员,或者foreach在子数组上。这是创建模板的非常简单的技术。您可以使用PHP,因此实际上非常灵活(只需画出属于您的视图层的代码以及属于应用程序一部分的边界即可,例如为视图提供值)。
foreach
将SQL移出代码 。移走数据库交互代码。创建您自己的一个或多个对象,这些对象具有一些方法,这些方法可以在实际处理代码中以您需要的方式(消耗)$component->getThatData()返回数据,例如,然后以规范化的形式返回数据。然后使这些组件使用专用的 数据库组件 与 数据库 进行对话。在您的应用程序代码(业务逻辑)中,仅使用数据库组件,最好使用您创建的对象来获取数据,因此您在主代码内不再有任何SQL行。
$component->getThatData()