PHP中的类,对象的实例持续多长时间。它仅限于正在运行的脚本还是会持续进行会话?如果会话的持续时间是这样的,无论PHP脚本是否已启动会话?
一个简单的问题,但这对我来说有很大的不同,因为它意味着用户数据将作为服务器存在而不需要存储在会话变量中。因此影响了我设计的一些基本原理。
由于 科林
答案 0 :(得分:3)
这个问题并不属于OOP,而是属于PHP行为
所有PHP数据与PHP脚本本身一样无处可去。
PHP脚本执行是原子的。它不像是在浏览器中不断运行的桌面应用程序,甚至不是与桌面应用程序持久连接的守护程序。它更像是一个命令行工具 - 做它的工作并退出。
这就是为什么需要使用外部存储,如文件或数据库。但是当然你只能在那里保存字符串,而不是变量或任何类型的实例。仅限字符串。
答案 1 :(得分:0)
这取决于PHP的配置方式。如果PHP配置为CGI,则每次调用都会丢失实例。将为每个http请求调用PHP。
如果将PHP配置为模块,则会有多个进程处理PHP请求。因此,实例将在“特定”过程中存活。但后续请求可能由不同的进程处理。
如果您需要类实例生存,则需要将其序列化并将其存储在数据库或文件中。
如果此信息是暂时的(或存储在其他地方),您可以在会话中存储(seralize)它。其中一个例子是每个http请求可能需要的用户全名,因此可以从DB读取一次,然后存储在会话中。
在会话中存储类实例的示例:http://www.talkphp.com/advanced-php-programming/3407-storing-class-instance-into-session.html
答案 2 :(得分:-1)