当你进入另一个页面时,是否会破坏php类的实例?

时间:2014-07-05 17:59:48

标签: php class session login

我正在php中构建一个使用会话的登录类。我想知道:

  • 如果这个类的实例将被保存,直到它被销毁,即使我移动到另一个页面(不破坏它)?
  • 我是否每次都要重建该类的另一个实例(在会话中保存一些数据)?
  • php类的生命是什么?

4 个答案:

答案 0 :(得分:1)

PHP程序在程序运行时仍然存在......就像任何其他编程语言一样。

现在,该程序实际运行了多长时间?我们必须区分:

  • PHP解释器本身(用C编写)
  • 您的脚本(用PHP编写)

PHP解释器不是为了在脚本之间共享变量而设计的,因此它运行的时间并不重要。

您的脚本将运行,直到它完成:它到达最后一行找到exitdie()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');
});