但这是我的问题.构建这样的系统意味着构建所有这些组件:
> PHP后端
> HTML视图
> CSS样式
> JavaScript前端
> AJAX异步连接
我希望他们所有人都遵循相同的“模式”,系统中的模块由一个文件夹或一组文件组成,这些文件包含该模块中的所有组件.
但是我很难获得这个架构以便我喜欢它.这是我到目前为止:
>整个主系统或多或少都是用程序PHP编写的.这解决了请求URL,处理缓存,日志记录和调试以及加载其他组件.
> PHP,在构建页面时,根据当前模块加载模块特定的javascript文件,CSS文件,HTML文件和其他组件.这意味着每个模块都尽可能轻量级,同时可以根据当前模块需求进行扩展.
>系统还包含可在系统范围内使用的对象的OOP组件(例如“用户”或其他类型的类).
>该系统采用MVC原则构建,但没有OOP.
但我确实感觉真的很肮脏 – 以程序方式构建主系统.我之前确实开始在OOP中编写它,但由于必须使所有内容都适合同一系统,因此很快就发现自己陷入了困境.它是OOP,但它是紧密耦合的,我不喜欢它,虽然它是以OOP方式编写的,组件实际上不是那么独立,或者只是管理的麻烦.
我可以遵循任何模式或指南来获得更好的结果吗?我喜欢当前的系统是我可以调用任何东西,预览渲染PHP,或HTML视图,CSS样式,额外的Javascript函数和每个需求的AJAX通信,保持脚部非常小,但它感觉很脏.我甚至使用全局主数据库连接(尽管它是一个全局对象).
有任何想法吗?如果它只是一种语言就不会成为一个问题,但试图让所有事情协同工作是一件令人头痛的问题.
谢谢!
解决方法
我在creating Agile Toolkit学到了很多东西.
>查看桌面系统. – Cocoa,Objective Windows和其他面向对象的桌面系统很久以前就解决了这些问题.创建视图,连接操作,定义回调.这映射到HTML模板化视图,JavaScript绑定和AJAX请求.
>运行时对象树.在Agile Toolkit中,第一阶段是初始化.在此阶段期间,对象被插入到彼此中.例如,您将Button添加到表单中并将表单添加到页面中.然后是渲染阶段,从所有内容递归地生成HTML.这使组件回显HTML更有意义.
> jQuery UI小部件.使用它们是解决许多问题的好方法. Agile Tolokit中的视图可以与各自的jQuery UI Widgets交谈.
>您提到的对象是Agile Toolkit中的“模型”.如果您正在寻找独立版本,则可以依赖某些ORM框架.我已经完成了自己与视图的紧密集成.
>重新考虑去耦.如果您自己开发所有系统,那么耦合会给您带来很多好处.特别是如果它是面向对象的架构并且你继承了东西.您需要一些Java经验或桌面开发经验才能使这件事情正确.
链接:
> What is Object Oriented Web Development
> Object Oriented Programming in PHP
> Execution steps in Agile Toolkit