组织这个项目的“正确方法”是什么?

时间:2011-01-11 19:20:17

标签: php perl design-patterns

我正在开发一个允许多个用户提交大型数据文件并对其执行操作的项目。执行这些操作的“后端”是用Perl编写的,而“前端”使用PHP加载HTML模板文件并确定要传递的内容。数据存储在数据库(MySQL,SQLite,Oracle)中,当有数据尚未被执行时,Perl将其添加到正在运行的队列中,该队列根据系统负载将数据传递给其他线程。此外,在主Perl脚本运行之前和之后可能存在数据的预处理和后处理(规范不清楚),因此我可能希望允许这些处理器是用户可选择的插件。我一直在以更加程序化的方式编写这个项目,但我很快意识到分离问题的好处,以限制一个变化对项目其余部分的范围。

我对设计模式缺乏经验,很好奇最好的方法是什么。我听过很多MVC,但我不确定如何应用它。具体来说,构建此代码(在设计模式和文件夹层次结构方面)有哪些好的选择?如何使用PHP和Perl实现这一目标,同时最大限度地减少语言之间的重复代码?我应该将我的PHP文件保存在顶层,这样我的URL中没有丑陋的路径吗?

另外,如果我想提供可互换的数据库,那么每个表是否都需要自己的DAO实现?

2 个答案:

答案 0 :(得分:1)

这确实是几个问题,但这里有:

<强> MVC

要实现MVC,您需要清楚地了解Model,View和Controller部分负责的内容。你可以read about this for yourself,但在这种情况下:

  • 模型应该只包含对数据文件执行操作的代码,即后端Perl脚本
  • 视图仅为HTML模板。除了显示页面所需的内容之外,不应嵌入PHP逻辑。
  • 控制器将是应用程序的其余部分:将PHP前端连接到Perl后端的部分,以及可能用于轮询新文件的Perl脚本。

对于您创建的每个php,html或perl文件,它应该完全清楚它属于哪个部分。切勿在同一文件中混淆模型,视图或控制器代码。

没有理由不能继续编写程序。你也不一定需要一个框架;它可以帮助你把事情放到适当的位置,但也可能需要一些时间来学习。

MVC更像是您需要牢记的问题分离。考虑它的一个好方法是:“这些组件中的每一个都可以与其他组件分开工作”,例如:

  • 你能写一个'模拟'(示例)数据文件,并让Perl脚本处理它而不运行任何PHP代码吗?
  • 你能从前端请求一个操作,并让它将所有参数传递到一个地方,准备好单个Perl例程来获取,而无需运行和Perl代码吗?

如果PHP和Perl脚本完全不同,那么你不必担心代码重复(PHP只是设置用户参数和输入文件,Perl只接受这些参数和文件,并输出新文件)。

对于文件夹层次结构,如果您没有使用任何现有框架,最重要的是它有意义,一致,并且您记录您的决策,例如在自述文件中。

丑陋的网址

您不需要将您的php文件放在任何特定的地方。之后使用Apache重写规则使URL变得很漂亮。 (rewrite rules generator - 请参阅“301重定向文件”部分。但是一个好的MVC框架会为你解决这个问题。

用户可选择的插件

小心不要太早优化。您可以自己开发新的预处理/后处理步骤,并将它们放在一个列表供用户选择。

答案 1 :(得分:0)

对于任何Web开发人员来说,MVC框架都是一个很好的工具,它提供了明确的分离,这对于保持代码的组织是不可或缺的。

对于PHP,我建议Zend Framework

数据库架构将根据您使用的平台而改变。