PHP析构函数行为问题

时间:2011-05-25 10:57:41

标签: php

我找到了这个http://bugs.php.net/bug.php?id=30210,根据PHP团队的说法,这不是一个bug。我无法理解的是为什么你会在析构函数之前重置目录。非常感谢您对此的看法,以及您是否可以解释与其他语言相比的行为。

3 个答案:

答案 0 :(得分:1)

也许升级你的PHP版本? PHP 5.3.5正确执行此操作,您的testscript输出您期望的输出。那说;我认为这确实是一个错误,因为我可以想象你可能想要在破坏一个对象时清理当前工作目录中的东西,你需要CWD这样做。

答案 1 :(得分:1)

  

根据PHP团队不是一个bug

您链接的错误报告显示他们最终改变了主意。

  

这已在较新版本的PHP中修复。至少在5.2.6和5.3.5中工作。

答案 2 :(得分:0)

要修复此问题,请查看http://www.php.net/manual/en/language.oop5.decon.php#56996

我对pHP内部一无所知,所以我可能在这里错了,但我假设这是因为PHP作为模块运行,而不是作为CGI应用程序运行(与其他语言一样)。我假设模块处理包含以下内容:

load_module(php)
init_module(mod_php)
parse&execute_scripts(php)
deinit_module(php)

我假设在解析和执行完成后,析构函数在deinit阶段执行,并且所有输出都已正式完成...

测试时请注意使用的sapi(php有很多sapi)