PHP对象保持

PHP对象保持,php,session,object,instance,Php,Session,Object,Instance,假设在我的应用程序中,我在第1页创建了一个对象实例。然后用户转到应用程序的其他部分,我希望实例保持不变。如何“保存”实例?会话?我在应用程序中使用了两种方式:会话和数据库。会话是的,但它将是具有相同属性的新实例,而不是相同实例。其他选项是使用O/R映射器将对象存储在DB中,并在会话中保留该对象的密钥,或者使用memcached和唯一密钥(比如会话ID)——但这仍然不是同一个实例——只是具有相同属性的实例 如果您在PHP中的两个请求之间需要完全相同的对象实例,恐怕这是不可能的(不是不可能的,一切都

假设在我的应用程序中,我在第1页创建了一个对象实例。然后用户转到应用程序的其他部分,我希望实例保持不变。如何“保存”实例?会话?

我在应用程序中使用了两种方式:会话和数据库。

会话是的,但它将是具有相同属性的新实例,而不是相同实例。其他选项是使用O/R映射器将对象存储在DB中,并在会话中保留该对象的密钥,或者使用memcached和唯一密钥(比如会话ID)——但这仍然不是同一个实例——只是具有相同属性的实例

如果您在PHP中的两个请求之间需要完全相同的对象实例,恐怕这是不可能的(不是不可能的,一切都是可行的-但您必须在某种类型的应用程序服务器上运行PHP)

是的,请使用

在页面的开头调用,然后使用类似于
$\u SESSION['myobject']=$myobject的内容存储对象

在调用SESSION\u start()之后,后面的页面可以访问
$\u SESSION['myobject']

您需要确保使用该会话的任何页面都定义了该对象的类或能够定义该类


您的类还可以定义神奇的方法,并允许您清理任何不希望序列化的成员变量(如资源,如db句柄)。在唤醒期间,您可以恢复这些状态。

您基本上有两种选择:服务器端状态或客户端状态

服务器端状态通常通过会话完成。这是最简单、功能最强大的解决方案,但它有一些缺点(并发性、无法随时间保持状态等)

客户端状态可以通过URL来维护,通常在查询字符串参数中。例如,要“记住”两个页面之间的变量
$name
,可以在第一个页面上创建一个链接,如下所示:
http://www.example.org/second_page.php?name=Jimbo
,然后第二页可以通过
$\u get
获取变量。这很难做到正确,而且在页面之间可以传输多少状态方面也有一些限制。因此,人们倾向于使用服务器端状态,即使客户端状态更合适