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

基于web的信息系统的PHP/JavaScript设计模式,php,javascript,html,oop,frameworks,Php,Javascript,Html,Oop,Frameworks,我已经写了很多年了,我发现自己处于一个挫折的境地。我正在开发一个新的基于web的服务,它也有一个UI,它将从头开发。它将使用一些开源组件,但它本身主要是一个新事物 但这是我的问题。构建这样一个系统意味着构建所有这些组件: PHP后端 HTML视图 CSS样式 JavaScript前端 AJAX异步连接 我希望它们都遵循相同的“模式”,即系统中的一个模块由一个文件夹或一组文件组成,其中包含该模块中的所有组件 但是我很难得到我想要的架构。以下是我到目前为止的情况: 整个主系统或多或少都是用过程

我已经写了很多年了,我发现自己处于一个挫折的境地。我正在开发一个新的基于web的服务,它也有一个UI,它将从头开发。它将使用一些开源组件,但它本身主要是一个新事物

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

  • PHP后端
  • HTML视图
  • CSS样式
  • JavaScript前端
  • AJAX异步连接
我希望它们都遵循相同的“模式”,即系统中的一个模块由一个文件夹或一组文件组成,其中包含该模块中的所有组件

但是我很难得到我想要的架构。以下是我到目前为止的情况:

  • 整个主系统或多或少都是用过程化PHP编写的。这将解决请求URL,处理缓存、日志记录和调试,并在其他组件中加载
  • PHP在构建页面时,加载模块特定的javascript文件、CSS文件、HTML文件和基于当前模块的其他组件。这意味着每个模块都尽可能轻量级,同时可以根据当前模块的需要进行扩展
  • 系统还集成了对象(如“用户”或其他类型的类)的OOP组件,这些组件可以在系统范围内使用
  • 该系统采用MVC原则构建,但没有OOP
但是我真的感到很肮脏,因为我以程序化的方式构建了主系统。起初我确实开始用OOP编写它,但很快我就发现自己很头疼,因为必须让所有东西都适合同一个系统。它是面向对象的,但它是紧密耦合的,这是我不喜欢的,因为它是用面向对象的方式编写的,组件实际上没有那么独立,或者只是管理起来很麻烦

有没有什么模式或指南我可以遵循,以获得更好的结果?我喜欢当前系统的地方在于,我可以调用任何东西,预视图呈现PHP或HTML视图,CSS样式,额外的Javascript函数和AJAX通信(按需),使足迹非常小,但感觉很脏。我甚至对主数据库连接使用了一个全局对象(尽管它是一个全局对象)

有什么想法吗?如果只是一种语言的话,这根本就不是问题,但是试图让所有的东西都协同工作是有点头疼的


谢谢

我什么都不知道,我的想法:

  • 如果您不喜欢OOP代码,可能是设计错了。面向对象的思想是,对象非常自然地表示事物,因此它们应该非常容易处理。如果你不喜欢这种耦合,有一些技术可以解决
  • 听起来您的MVC模式是错误的。HTML/CSS/JavaScript内容都应该在视图方面处理。在我看来,您使用了一些MVC原则,而忽略了其他原则。当然,如果没有代码,这只能是一种怀疑
完全实现了您想要的功能。它的源代码在上可用,因此您可以从中学习

我学到了很多东西

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

  • 运行时对象树。在敏捷工具包中,第一阶段是初始化。在此阶段,对象将相互插入。例如,您将按钮添加到表单中,并将表单添加到页面中。然后是呈现阶段,该阶段递归地从所有内容生成HTML。让组件回显HTML更有意义

  • jQueryUI小部件。使用这些是解决许多问题的好方法。AgileToLokit中的视图可以与相应的jQueryUI小部件进行对话

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

  • 重新考虑去耦合。如果您自己开发所有的系统,那么耦合会给您带来很多好处。特别是如果它是面向对象的体系结构,并且您继承了一些东西。您需要一些Java经验或桌面开发经验才能正确完成此任务

链接:


您是否研究过数千个PHP框架/CMS系统/etc中的任何一个?有很多这样的例子,很难回答你的问题,因为你没有提出任何真正的问题。我目前正在开发一个类似于你的系统,但有一些不同之处。我正在使用MVC/OOP。我无法想象你是按程序处理的。我认为,在你的项目有一些边界之前,OOP中不应该有任何问题。你可以看看企业应用程序架构的模式、GoF模式等,然后自己实现它们。然而,最简单(也是最明显)的答案是看看框架(已经面临这个确切的问题)是如何实现这些模式的,或者(a)使用框架,或者(b)将框架的方法调整到您的应用程序中。在你选择的范例中寻找开源框架,看看它们是如何运作的,看看什么与你的应用程序相匹配。你们中有人能举一些我应该看的框架的例子吗?因为那里有很多,而且很多都过于复杂,占地面积太大。有没有非常轻量级的东西已经解决了这些问题?好吧,这要看情况而定。MVC,在最经典的意义上,不同于