单例-在简单的基于PHP的CMS中使用它们

单例-在简单的基于PHP的CMS中使用它们,php,singleton,Php,Singleton,我读过很多关于单身汉的书,大多数人都认为他们是不好的习惯,并且尽可能地避免他们。大多数人这么说是因为很难调试使用它们的应用程序 现在,创建一个简单的CMS,我尝试了几种方法,它们似乎是我的最佳选择 配置数据 该文件在应用程序启动时加载,我看不出为什么在整个应用程序中调用配置数据时不使用单例模式 请求数据 请求数据应该存储来自php服务器变量(POST、GET、COOKIE)的所有信息,以便在整个应用程序中使用singleton读取和写入(例如COOKIE)数据 响应缓冲区 我想使用响应类(作为单

我读过很多关于单身汉的书,大多数人都认为他们是不好的习惯,并且尽可能地避免他们。大多数人这么说是因为很难调试使用它们的应用程序

现在,创建一个简单的CMS,我尝试了几种方法,它们似乎是我的最佳选择

  • 配置数据
  • 该文件在应用程序启动时加载,我看不出为什么在整个应用程序中调用配置数据时不使用单例模式

  • 请求数据
  • 请求数据应该存储来自php服务器变量(POST、GET、COOKIE)的所有信息,以便在整个应用程序中使用singleton读取和写入(例如COOKIE)数据

  • 响应缓冲区
  • 我想使用响应类(作为单例),它将保存由模板呈现的所有数据。所以应用程序可以加载所有视图,逐个渲染它们,并将回显数据存储在响应类中,最后输出存储在响应中的整个文档

    所有示例的问题: A) 这真的很糟糕吗?为什么?我看不出这里有什么邪恶。 B) 有没有其他/更好的方法

    谢谢

    这真的是一种糟糕的做法吗?为什么,我看不出这里有什么邪恶

    设计模式是建议,而不是标准。你可以使用它们,憎恨它们,称它们为“反模式”,做任何你想做的事,但那只是你的意见。“四人帮”和任何一个博客都会像你一样表达他们对此事的看法,你猜怎么着?这并不重要

    不要问自己是否有人认为这是一个坏习惯,问问自己:“我认为这是一个坏习惯吗?”如果答案是否定的,那就去做吧

    在做出这个决定之前,我建议你阅读双方的观点(赞成和反对),并提出自己的观点。但最终没有正确的答案,这只是你决定做什么的问题

    有没有其他(更好的)方法

    一般来说,我倾向于在可能的情况下使用依赖注入,而不是单例。但是,如果我无法使用DI,而Singleton是我的一个选择,那么我肯定会选择它。
    我的建议是学习最重要的模式,并在特定环境中使用对您有意义的任何模式。

    我个人避免使用可能重复的模式,因为它们会使应用程序更难测试。由于这在很大程度上是一种观点,我想说这个问题不是建设性的。请求数据已经是超全局的,所以我不明白为什么需要将其放在单例中。也就是说,单例是不好的,因为它们破坏了封装。通常,使用它们只是因为程序员不知道如何在应用程序的不同层之间共享资源。这正是依赖注入存在的原因,也是为什么在几乎所有情况下,“我应该使用singleton”的答案实际上是“不,使用DI容器”@KevinM1作为请求,我只想有更干净的代码来访问和编写全局变量:)我刚刚阅读了DI概念,乍一看,它们似乎与singleton相同,具有创建多个实例的选项。但在发表任何声明之前,我会通读一遍。@shannethat我没有说我的意见!我给出了一些建设性的例子,我希望在其中使用它们,并问我为什么不使用它们作为例子。谢谢你的回答。我会调查的。虽然singleton看起来像是为我的第三个示例制作的,我可以在其中访问、修改整个应用程序的页面输出(响应)。