Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个PHP类的实例将持续多长时间?_Php_Oop - Fatal编程技术网

一个PHP类的实例将持续多长时间?

一个PHP类的实例将持续多长时间?,php,oop,Php,Oop,在PHP中,类object的实例持续多长时间。它是仅限于运行的脚本,还是将持续一个会话?如果它持续一个会话,这是否与PHP脚本是否已启动会话无关 这是一个简单的问题,但这对我来说有很大的不同,因为这意味着用户数据将作为服务器上的一个变量存在,而不需要存储在会话变量中。因此影响了我设计的一些基础 谢谢 科林这里有很好的解释: 这个问题实际上不属于OOP,而是属于PHP行为 所有的PHP数据都将与PHP脚本本身一样毫无用处 PHP脚本的执行是原子的。它不像一个在浏览器中不断运行的桌面应用程序,甚至不

在PHP中,类object的实例持续多长时间。它是仅限于运行的脚本,还是将持续一个会话?如果它持续一个会话,这是否与PHP脚本是否已启动会话无关

这是一个简单的问题,但这对我来说有很大的不同,因为这意味着用户数据将作为服务器上的一个变量存在,而不需要存储在会话变量中。因此影响了我设计的一些基础

谢谢
科林

这里有很好的解释:


这个问题实际上不属于OOP,而是属于PHP行为

所有的PHP数据都将与PHP脚本本身一样毫无用处

PHP脚本的执行是原子的。它不像一个在浏览器中不断运行的桌面应用程序,甚至不像一个与桌面应用程序保持持久连接的守护进程。它更像是一个命令行实用程序——完成任务并退出


这就是为什么需要使用外部存储,如文件或数据库。当然,您只能在那里保存字符串,而不能保存变量实例或任何类似的内容。仅限字符串。

这取决于PHP的配置方式。如果将PHP配置为CGI,则每次调用都会丢失实例。PHP将为每个http请求调用

如果将PHP配置为模块,那么将有多个进程处理PHP请求。因此,该实例将在“特定”过程中继续存在。但随后的请求可能由另一个进程处理

若您需要类实例生存下来,那个么您将需要序列化它并将其存储在DB或文件中

如果此信息是暂时的(或存储在其他地方),您可以将其存储(序列化)到会话中。一个这样的例子是每个http请求可能需要的用户全名,所以它可以从DB中读取一次,然后存储在会话中


在会话中存储类实例的示例:

所以你可以说这个问题是重复的,应该关闭。好吧,不是真正的重复,它只是另一个已经讨论过的问题的一部分。我看到了这个线程问题,我的结论是,它可能会在会话中继续存在。我认为在会话数组中存储变量可能更容易。它似乎更加可靠。