加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP如何跟踪创建的对象?

发布时间:2020-12-13 21:36:21 所属栏目:PHP教程 来源:网络整理
导读:这可能是一个愚蠢的问题,但我不是来自OOP背景,虽然我正在阅读和学习,但我仍然在努力学习一些概念. 现在我正在使用PHP 5.3并使用几个不同的对象类设计一个相当简单的登录:定义用户的用户.启动和维护会话数据的会话以及是否有人登录,以及执行查询的数据库. 因
这可能是一个愚蠢的问题,但我不是来自OOP背景,虽然我正在阅读和学习,但我仍然在努力学习一些概念.

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

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

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

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

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

解决方法

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

从PHP manual on Session Handling(强调我的):

The session support allows you to register arbitrary numbers of variables to be preserved across requests. When a visitor accesses your site,PHP will check automatically (if session.auto_start is set to 1) or on your request (explicitly through session_start() or implicitly through session_register()) whether a specific session id has been sent with the request. If this is the case,the prior saved environment is recreated.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读