我正在php中构建一个使用会话的登录类。我想知道:
答案 0 :(得分:1)
PHP程序在程序运行时仍然存在......就像任何其他编程语言一样。
现在,该程序实际运行了多长时间?我们必须区分:
PHP解释器不是为了在脚本之间共享变量而设计的,因此它运行的时间并不重要。
您的脚本将运行,直到它完成:它到达最后一行找到exit
,die()
或return
语句。这个简单的事实应该已经回答了你的问题但同样值得考虑的是,当PHP脚本仅用于提供HTTP请求时,保持PHP脚本像桌面应用程序一样连续运行是没有意义的。与其他协议(即FTP或IRC)不同,HTTP是无状态的:每个用户请求都会启动和关闭连接*。
(*)这不完全正确(连接可以并且通常可以重复使用),但不会影响设计含义。
答案 1 :(得分:0)
是的,php类将被销毁。如果选择:Documentation
,您可以序列化对象并将其存储在会话中答案 2 :(得分:-1)
PHP
对象(class instance)
就像一个变量,会在页面请求结束时被销毁。此外,您无法在PHP会话中存储对象。您可以尝试的最好的方法是serialize()
,然后unserialize()
以保存您的数据。
答案 3 :(得分:-1)
您应该根据请求看到这一点。如果你在进入另一个页面时发出新请求,那么它需要重建。
您还可以做的是控制反转或某种寄存器设置。这样您就可以定义一次并返回一个实例。
示例:
$ioc->translate(function() {
# Do stuff load configs. Get data from previous request
return new \Danoon\Link\Translate('../etc/lang/en_US.php');
});