【问题标题】:What is the relationship of HTTP headers and directory with destructors in php?HTTP头和目录与php中的析构函数有什么关系?
【发布时间】:2018-02-20 02:54:39
【问题描述】:

我知道析构函数在 PHP OOP 中做了什么,但我想知道 HTTP 标头和目录与 php 中的析构函数的关系是什么?

谁能告诉我这是什么意思?

脚本关闭期间调用的析构函数已经发送了 HTTP 标头。脚本关闭阶段的工作目录可能与某些 SAPI(例如 Apache)不同。

这在下面的参考链接中的析构函数中有记录。

http://php.net/manual/en/language.oop5.decon.php

【问题讨论】:

  • 意思是“不要尝试在__destruct()中调用header()之类的东西”和“你的应用程序的状态可能在执行过程中发生了变化”。

标签: php destructor


【解决方案1】:

试图解释何时调用析构函数 headers_sent() 将返回 true,它提醒我们在调用析构函数时工作目录可能不同(它可能与在构造函数期间或调用其他方法时的情况如何)(通常工作目录是脚本所在的位置)。解决方法是使用绝对路径或使用 chdir();

因此,您在执行以下操作时需要小心:

class Files{

    function __destruct() {
          unlink($this->logfile); // it may be wrong if it is relative path
    }    
}

回到第一部分,当调用析构函数时,标头已经发送。您将无法处理依赖于“已发送标头”的事情。例如,重定向或初始化会话。

【讨论】:

    猜你喜欢
    • 2018-08-29
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    相关资源
    最近更新 更多