在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框架都使用单例模式或访问初始化对象的函数。这两种方法都不错,但正如我所说的那样,我对它们都不满意。我想扩大我对这里存在的常见模式的看法。我找实例,更多的想法和指针向资源从讨论这个长期的,真实世界的视角。另外,我很想知道这个问题的专门,利基或简单的奇怪方法。
3 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
我喜欢依赖注入的概念:
“依赖注入是组件通过其构造函数,方法或直接进入字段的依赖关系。(来自Pico Container网站)”
Fabien Potencier撰写了一系列关于依赖注入的非常好的文章以及使用它们的必要性。他还提供了一个很好的小型依赖注入容器,名为Pimple,我非常想使用它(github上的更多信息)。
如上所述,我不喜欢单身人士的使用。关于为什么Singletons不是好设计的一个很好的总结可以在Steve Yegge的博客中找到。
- 3 回答
- 0 关注
- 628 浏览
添加回答
举报
0/150
提交
取消