PHP如何处理对象

PHP如何处理对象,php,arrays,oop,class,object,Php,Arrays,Oop,Class,Object,我有一个名为user的类。我创建了该类的一个实例来处理它。这个类有一个名为login的函数,它正是这样做的。它让用户登录。我这样称呼它: $user = new user(); $user -> logIn(); 稍后在另一个文件中,我希望能够再次对该对象执行某些操作。我的第一个想法是让它全球化并过上幸福的生活,但后来我想到,如果第二个用户出现并登录,他们将使用同一个对象-导致混乱。 因为我在大学里学习Java,所以我考虑使用HashMap样式的数组来保存用户的会话id和对象。在PHP中

我有一个名为user的类。我创建了该类的一个实例来处理它。这个类有一个名为login的函数,它正是这样做的。它让用户登录。我这样称呼它:

$user = new user();
$user -> logIn();
稍后在另一个文件中,我希望能够再次对该对象执行某些操作。我的第一个想法是让它全球化并过上幸福的生活,但后来我想到,如果第二个用户出现并登录,他们将使用同一个对象-导致混乱。 因为我在大学里学习Java,所以我考虑使用HashMap样式的数组来保存用户的会话id和对象。在PHP中,它将如下所示:

$users = array[ session_id1 => user1object,
                session_id2 => user2object
         ]
使用session_id,我可以随时跟踪用户的对象,至少只要用户登录就可以。 现在我的问题是:这是最好的方式吗?我是否忽略了什么

现在后退一步:假设这是一条路,我有另一个问题:我正在创建对象,调用它的登录函数。现在,如果用户成功登录,那么我就在users对象中的login函数中。如何将该对象存储到数组中,例如HashMap样式

非常感谢, 斯蒂勒

我发现了这两个问题,但它们没有回答我自己的问题:
这个假设是错误的:

我的第一个想法是让它全球化并过上幸福的生活,但后来我想到,如果第二个用户出现并登录,他们将使用同一个对象-导致混乱


不同的用户将无法访问同一对象。因此,要回答您的问题:不,这不是最好的方法-您不需要制作数组来跟踪不同用户的对象…

当两个用户在服务器上运行相同的脚本时,变量不会相互干扰。这是因为变量的内存只在脚本执行期间分配。每次用户调用PHP脚本时,服务器都会分配新内存,在脚本执行后,内存会再次释放

这意味着,调用同一脚本的两个用户将拥有不同的用户对象,但如果一个用户调用脚本两次,他也将拥有两个不同的用户对象,因为服务器分配两组不同的内存,并为每个脚本执行独立地处理它们

如果您希望在脚本调用之间用户对象保持不变,并且每个用户都有自己的用户对象,那么您应该查看并选择。会话大致是这样工作的:

当用户第一次访问服务器时,会给他一个唯一的标识符,并在服务器上创建一个文件。该文件保存会话变量。在这些会话变量中,您可以存储任何需要的内容,例如用户对象


下次用户调用脚本时,将再次加载该文件中的变量,您可以重新使用它们。

何时让两个用户同时登录?您显示的第一个问题得到了明确的回答:会话完成了繁重的工作。您传递一个对象并对其进行会话序列化,因此可以在请求之间移动。PHP没有所谓的持久性,这就是为什么会存在会话和cookie,因为PHP在服务器端,我的站点上可能有多个用户,这意味着会有多个用户登录。或者这两个用户的php对象已经相互独立了吗?您没有正确理解php。Web服务器上的每个“命中”都是由一个完全独立的PHP实例处理的。两个用户同时在同一台服务器上运行同一个脚本不会发生冲突。实际的PHP实例将有单独的内存空间。@Korcholis:这是一个会话ID。它们可能共享一个会话,但永远不会共享同一个PHP实例。