PHP如何处理对象

时间:2013-04-02 16:04:15

标签: php arrays oop class object

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

$user = new user();
$user -> logIn();

稍后在另一个文件中,我希望能够再次对该对象执行某些操作。我的第一个想法是“嘿让它全球化并过上幸福的生活”,但后来我想到,现在如果第二个用户出现并登录,他们将使用相同的对象 - 导致混乱。 因为我正在大学学习Java,所以我考虑使用HashMap样式的数组来保存用户的会话ID和他的对象。在PHP中它看起来像这样:

$users = array[ session_id1 => user1object,
                session_id2 => user2object
         ]

使用session_id,我可以随时跟踪用户的对象(至少在他登录时)。 现在我的问题:这是最好的方式 - 我忽略了什么吗?

现在退一步:假设这是要走的路,我还有另一个问题:我正在创建对象,调用它的登录功能。现在,如果用户成功登录,我就在user对象中的login-function中。如何将该对象存储到我的数组中(例如HashMap风格)。

非常感谢, stiller_leser

我发现了这两个问题,但他们没有回答我自己的问题: oop - How does PHP track created objects PHP, OOP, Creating an object (closed)

2 个答案:

答案 0 :(得分:2)

这个假设是错误的:

  

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

不同的用户不会访问同一个对象。所以回答你的问题:不,这不是最好的方法 - 你不需要制作一个数组来跟踪不同用户的对象......

答案 1 :(得分:0)

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

这意味着,调用相同脚本的两个用户将拥有不同的用户对象,但如果一个用户调用该脚本两次,他还将拥有两个不同的用户对象,因为服务器分配了两个不同的“内存组”和< strong>为每个脚本执行独立处理。

如果要实现脚本调用之间的用户对象保持不变,并且每个用户都有自己的用户对象,那么您应该查看sessionsserialization。会话大致以这种方式工作:

当用户第一次访问服务器时,他将获得一个唯一标识符,并且正在创建服务器上的文件。该文件包含会话变量。在这些会话变量中,您可以存储您想要的任何内容(例如您的用户对象)。

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