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

时间:2018-03-07 16:58:51

标签: php singleton

使用singleton模式创建的对象只能有一个实例,因此,它是否适用于基于PHP的Web应用程序?

问题:

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

  2. 如果一个Singleton对象在多个访问者之间共享,那么它在何处以及如何存储在服务器上?

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

1 个答案:

答案 0 :(得分:0)

通常当人们用PHP谈论单身人士时,他们的意思是每个请求周期。因此,在评估一个请求时,只能存在一个单例类的实例。这意味着每个访问者都会获得他们自己的实例和每次访问(因此,两次后续访问中的同一访问者也会获得两个不同的实例)。

虽然存在更大/更长范围的类似概念。 Flow Framework知道称为会话范围的内容,因此同一个访问者通过在会话数据中存储“singleton”对象来获得跨访问的相同实例,但这显然是有限的。除非你在Java中使用像app服务器这样的东西(比如Tomcat),否则没有一种方法可以为整个应用程序提供一个单例(因此对于每个访问者并访问同一个实例)。我现在不确定appserver.io是否具有此功能。