基于Web的信息系统的PHP/JavaScript设计模式

kin*_*ple 7 html javascript php oop frameworks

我已经编码多年了,发现自己处于挫折之中.我正在开发一个新的基于Web的服务,它也有一个用户界面,它将从头开始开发.它将使用一些开源组件,但主要是一个新的东西.

但这是我的问题.构建这样的系统意味着构建所有这些组件:

  • PHP后端
  • HTML视图
  • CSS样式
  • JavaScript前端
  • AJAX异步连接

我希望他们所有人都遵循相同的"模式",系统中的模块由一个文件夹或一组文件组成,这些文件包含该模块中的所有这些组件.

但是我很难获得这个架构以便我喜欢它.这是我到目前为止:

  • 整个主系统或多或少都是用程序PHP编写的.这解决了请求URL,处理缓存,日志记录和调试以及加载其他组件.
  • PHP,在构建页面时,基于当前模块加载模块特定的javascript文件,CSS文件,HTML文件和其他组件.这意味着每个模块都尽可能轻量级,同时可以根据当前模块需求进行扩展.
  • 系统还包含可在系统范围内使用的对象的OOP组件(例如"用户"或其他类型的类).
  • 该系统采用MVC原则构建,但没有OOP.

但我确实感到非常愚蠢 - 因为以程序的方式构建了主系统.我最初开始在OOP中开始编写它,但由于必须使所有内容都适合同一系统,因此很快发现自己处于头痛状态.它是OOP,但它是紧密耦合的,我不喜欢它,虽然它是以OOP方式编写的,组件实际上不是那么独立或者只是管理的麻烦.

我可以遵循任何模式或指南来获得更好的结果吗?我喜欢当前的系统是我可以调用任何东西,预览呈现PHP,或HTML视图,CSS样式,额外的Javascript函数和每个需求的AJAX通信,保持脚步非常小,但它感觉很脏.我甚至使用全局主数据库连接(尽管它是一个全局对象).

有任何想法吗?如果它只是一种语言就不会成为一个问题,但试图让一切工作在一起是一件令人头痛的问题.

谢谢!

rom*_*nsh 4

http://agiletoolkit.org/完全实现了您正在寻找的内容。它的源代码可以在http://github.com/atk4/atk4上找到,因此您可以从那里学习。

我在创建敏捷工具包时学到了很多东西。

  • 看看桌面系统。- Cocoa、Objective Windows 和其他面向对象的桌面系统很早以前就已经解决了这些问题。创建视图、连接操作、定义回调。这映射到 HTML 模板视图、JavaScript 绑定和 AJAX 请求。

  • 运行时对象树。在Agile Toolkit中,第一阶段是初始化。在此阶段,对象会相互插入。例如,您将按钮添加到表单中,并将表单添加到页面中。然后是渲染阶段,从所有内容递归生成 HTML。这比让组件回显 HTML 更有意义。

  • jQuery UI 小部件。使用它们是解决许多问题的好方法。Agile Tolokit 中的视图可以与相应的 jQuery UI 小部件交互。

  • 您提到的对象是敏捷工具包中的“模型”。如果您正在寻找独立版本,您可以依赖一些 ORM 框架。我自己制作了它,使其与视图更紧密地集成。

  • 重新考虑脱钩。如果您自己开发所有系统,那么耦合会给您带来很多好处。特别是如果它是面向对象的体系结构并且您继承了事物。您需要一些 Java 经验或桌面开发经验才能做好这件事。

链接: