代码之家  ›  专栏  ›  技术社区  ›  Deepanshu

基于PHP的Web应用程序中的单例对象状态

  •  0
  • Deepanshu  · 技术社区  · 6 年前

    使用singleton模式创建的对象只能有一个实例,那么,它可以与基于PHP的web应用程序一起使用吗?

    问题:

    1. 是为应用程序上的每个访问者创建单例对象,还是在所有访问者之间共享?

    2. 若一个单例对象在多个访问者之间共享,那个么它在服务器上的存储位置和存储方式如何?

    3. 如果为不同的访问者生成不同的单例对象,那么网站的每个页面如何知道它必须使用相同的单例对象实例?

    1 回复  |  直到 6 年前
        1
  •  0
  •   ChristianM    6 年前

    通常,当人们在PHP中谈论单例时,他们指的是每个请求周期。因此,在对一个请求求值期间,只能存在singleton类的一个实例。这意味着每个访问者都有自己的实例,每次访问也有自己的实例(因此,在随后的两次访问中,同一个访问者也有两个不同的实例)。

    不过,存在范围更大/更长的类似概念。流框架知道一种称为会话范围的东西,因此同一访问者通过在会话数据中存储“singleton”对象,在访问中获得相同的实例,但这显然是有限的。除非您使用Java中的应用程序服务器(如Tomcat),否则没有一个好方法可以为整个应用程序创建一个单独的应用程序(因此对于每个访问者和访问同一个实例)。我不确定appserver是否。io目前已具备此功能。