Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 什么';这是“什么?”;“正确的方法”;组织这个项目?_Php_Perl_Design Patterns - Fatal编程技术网

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

Php 什么';这是“什么?”;“正确的方法”;组织这个项目?,php,perl,design-patterns,Php,Perl,Design Patterns,我正在从事一个项目,该项目允许多个用户提交大型数据文件并对其执行操作。执行这些操作的“后端”是用Perl编写的,而“前端”使用PHP加载HTML模板文件并确定要交付的内容。数据存储在数据库(MySQL、SQLite、Oracle)中,虽然有数据尚未被处理,但Perl将其添加到一个正在运行的队列中,该队列根据系统负载将数据传递给其他线程。此外,在主Perl脚本运行之前和之后可能会对数据进行预处理和后处理(规范不清楚),因此我可能希望允许这些处理器成为用户可选择的插件。我一直在以一种更加程序化的方式

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

我对设计模式非常缺乏经验,我很好奇最好的方法是什么。我听过很多关于MVC的说法,但我不确定如何应用它。具体来说,有哪些很好的选项可以构建此代码(在设计模式和文件夹层次结构方面)?如何使用PHP和Perl实现这一点,同时最大限度地减少语言之间的重复代码?我应该把我的PHP文件放在顶层,这样我的URL中就不会有难看的路径了吗


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

对于任何web开发人员来说,MVC框架都是一个很好的工具,它提供了定义良好的分离,这对于保持代码的组织是必不可少的

对于PHP,我推荐


数据库模式将根据您使用的平台而变化。

对于任何web开发人员来说,MVC框架都是一个很好的工具,它提供了定义良好的分离,这对于保持代码的组织是必不可少的

对于PHP,我推荐


数据库模式将根据您使用的平台而变化。

这确实是几个问题,但下面是:

MVC

要实现MVC,您需要清楚地了解模型、视图和控制器部分负责什么。您可以,但在这种情况下:

  • 模型应该只包含对数据文件执行操作的代码,即后端Perl脚本
  • 该视图将仅显示HTML模板。除了显示页面所需的内容外,不应在其中嵌入任何PHP逻辑
  • 控制器将是应用程序的其余部分:连接PHP前端和Perl后端的部分,可能还有轮询新文件的Perl脚本
对于您创建的每个php、html或perl文件,应该完全清楚它属于哪个部分。切勿在同一文件中混淆模型、视图或控制器代码

你没有理由不能按程序继续写作。你也不一定需要一个框架;它可能会帮助你把事情安排妥当,但也可能需要一些时间来学习

MVC更像是一种需要记住的关注点分离。思考这个问题的一个好方法是:“这些组件中的每一个都能独立工作吗”,例如:

  • 您能否编写一个“模拟”(示例)数据文件,并让Perl脚本在不运行任何PHP代码的情况下对其进行处理
  • 您是否可以从前端请求一个操作,并让它将所有参数传递到一个地方,为单个Perl例程获取做好准备,而无需运行和编写Perl代码
如果PHP和Perl脚本执行完全不同的操作(PHP只设置用户参数和输入文件,Perl只获取这些参数和文件,并输出新文件),则不必担心代码重复

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

丑陋的URL

您不需要将php文件放在任何特定的位置。使用Apache重写规则使url变得漂亮。(-请参阅“301重定向文件”部分)。但是一个好的MVC框架将为您解决这个问题

用户可选插件


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

这确实是几个问题,但下面是:

MVC

要实现MVC,您需要清楚地了解模型、视图和控制器部分负责什么。您可以,但在这种情况下:

  • 模型应该只包含对数据文件执行操作的代码,即后端Perl脚本
  • 该视图将仅显示HTML模板。除了显示页面所需的内容外,不应在其中嵌入任何PHP逻辑
  • 控制器将是应用程序的其余部分:连接PHP前端和Perl后端的部分,可能还有轮询新文件的Perl脚本
对于您创建的每个php、html或perl文件,应该完全清楚它属于哪个部分。切勿在同一文件中混淆模型、视图或控制器代码

你没有理由不能按程序继续写作。你也不一定需要一个框架;它可能会帮助你把事情安排妥当,但也可能需要一些时间来学习

MVC更像是一种需要记住的关注点分离。思考这个问题的一个好方法是:“这些组件中的每一个都能独立工作吗”,例如:

  • 您能否编写一个“模拟”(示例)数据文件,并让Perl脚本在不运行任何PHP代码的情况下对其进行处理
  • 你能要求手术吗