【发布时间】:2011-12-03 15:01:59
【问题描述】:
我的问题是,如果用户出现并使用面向对象的 PHP 应用程序,这些对象是如何与用户联系在一起的,一旦用户离开,它们会发生什么?
我了解OO
【问题讨论】:
-
我认为你的问题的某些部分已经消失了。
我的问题是,如果用户出现并使用面向对象的 PHP 应用程序,这些对象是如何与用户联系在一起的,一旦用户离开,它们会发生什么?
我了解OO
【问题讨论】:
PHP 是shared-nothing architecture,这意味着对于浏览器发出的每个 HTTP 请求,应用程序都会从一个空工作表开始(就 PHP 内部结构而言,例如变量和加载的类而言)。每个 PHP 对象都会在请求结束时消失。永久数据需要存储在其他地方(通常是数据库加上可能的基于键值的缓存,例如 memcached)。如何在这些外部存储中处理与用户相关的数据完全取决于应用程序。
【讨论】:
对象并没有真正与用户绑定...听起来您在谈论会话变量。您可以通过将其添加到 php $_SESSION 变量来为单个用户存储一些信息,例如:$_SESSION['user_id'] = 5。一旦用户离开,该信息在过期之前仍然可以访问(您可以设置过期日期,或者通常在用户关闭浏览器时过期)。对于大多数与用户打交道的 Web 应用程序,将要求用户登录,当他们登录时,有关该用户的信息将存储在会话中。这允许用户在页面应用程序的多个页面上保持登录状态。然后,如果用户决定注销,这就是您取消设置或销毁该会话数据的时候。
【讨论】:
当收到 HTTP 请求时,PHP 会启动,为您的代码设置运行时环境并运行它。之后,所有这些都被拆除,在下一次请求时从头开始重新创建。
所以除非你采取明确的步骤将你的对象(或任何其他类型的变量,真的)持久化到例如磁盘,然后在后续请求中读回它们,根本不会有过去创建的对象的痕迹。
【讨论】: