PHP如何跟踪创建的对象?

Too*_*oks 3 php oop

这可能是一个愚蠢的问题,但我不是来自OOP背景,虽然我正在阅读和学习,但我仍然在努力学习一些概念.

现在我正在使用PHP 5.3并使用几个不同的对象类设计一个相当简单的登录:定义用户的用户.启动和维护会话数据的会话以及是否有人登录,以及执行查询的数据库.

因此,当我的脚本运行时,我的会话对象被实例化,等等......这是我的问题.当我从一个页面移动到下一个页面时,如何跟踪该对象?或者更确切地说,我的问题是PHP如何知道与我的登录相关的对象是我的,而不是登录该网站的其他人?

我知道如果我是以非OOP方式进行此操作,我只需检查每个页面上的会话cookie并以这种方式检查我的数据,这对我的大脑来说可以处理.但是,跟踪对象数据的位置和方式.

EG:在每个页面上我想检查是否有人登录我引用$ session-> is_logged_in()等is_logged_in检查私有变量名是true还是false.此时没有检查cookie,这意味着该对象仍然存在,并且,因为它一直要求存储的变量,实例必须保持有用......但PHP,服务器如何与该对象的实例相关联那个用户?如果所有这些对象在服务器上浮动直到我销毁它们,那么对象不会使用大量内存吗?

正如我在开始时说的那样,这可能是一个非常基本的基础问题,但我还没有得到我的时刻,我可能会回到更简单的PHP.

Gor*_*don 5

会话数据(即$ _SESSION中的所有数据)默认序列化并存储在请求之间的文件中.调用session_start()时,数据会自动反序列化.

关于会话处理PHP手册(强调我的):

会话支持允许您注册任意数量的变量以跨请求保留.当访问者访问您的站点时,PHP将自动检查(如果session.auto_start设置为1)或您的请求(显式通过session_start()或通过session_register()隐式检查)是否已随请求发送特定会话ID.如果是这种情况,则重新创建先前保存的环境.

请求之间的内存中没有任何内容.PHP具有无共享体系结构,这意味着除非您使用专用缓存机制,否则将在每个请求上重新创建所有对象.