在PHP项目中,存在哪些模式来存储,访问和组织帮助程序对象?[关闭]
在基于PHP的面向对象项目中,如何组织和管理辅助对象,如数据库引擎,用户通知,错误处理等?
假设我有一个大的PHP CMS。CMS由各种类别组织。几个例子:
数据库对象
用户管理
用于创建/修改/删除项目的API
消息传递对象,用于向最终用户显示消息
一个上下文处理程序,可以将您带到正确的页面
显示按钮的导航栏类
记录对象
可能,自定义错误处理
等等
我正在处理永恒的问题,如何最好地使这些对象可以访问需要它的系统的每个部分。
很多年前,我的第一个应用程序是拥有一个包含这些类的初始化实例的$ application全局。
global $application;$application->messageHandler->addMessage("Item successfully inserted");
然后我切换到Singleton模式和工厂函数:
$mh =&factory("messageHandler");$mh->addMessage("Item successfully inserted");
但我对此也不满意。单元测试和封装对我来说变得越来越重要,在我的理解中,全局/单例背后的逻辑破坏了OOP的基本思想。
然后,当然有可能给每个对象提供它需要的辅助对象的许多指针,可能是最干净,资源节省和测试友好的方式,但我对这长期可维护性有疑问。
我研究过的大多数PHP框架都使用单例模式或访问初始化对象的函数。这两种方法都不错,但正如我所说的那样,我对它们都不满意。
我想扩大我对这里存在的常见模式的看法。我找实例,更多的想法和指针向资源从讨论这个长期的,真实世界的视角。
另外,我很想知道这个问题的专门,利基或简单的奇怪方法。
繁星点点滴滴