php __destruct 为啥通过 file_get_contents 得到不同的结果
Posted
技术标签:
【中文标题】php __destruct 为啥通过 file_get_contents 得到不同的结果【英文标题】:php __destruct why get different result by file_get_contentsphp __destruct 为什么通过 file_get_contents 得到不同的结果 【发布时间】:2021-05-05 06:56:52 【问题描述】:hint.php 中的内容是“111”
<?php
class T
public $filename = "hint.php";
function __destruct()
var_dump(file_get_contents($this->filename));
new T();
得到了
string(3) "111"
而当我设置一个变量$t时,结果会不一样。
$t = new T();
得到了
string(0) ""
为什么会这样
【问题讨论】:
我无法重现您的结果。设置$t = new T();
我仍然得到我的hint.php的内容。
我的php版本是PHP Version 7.3.1 系统是windows
【参考方案1】:
这是由bug in PHP 引起的。它已经存在了很长时间,而且看起来不会很快修复。
为避免此问题,请勿在关闭脚本中使用相对路径。
【讨论】:
以上是关于php __destruct 为啥通过 file_get_contents 得到不同的结果的主要内容,如果未能解决你的问题,请参考以下文章
在php中实现Serializable接口时正确调用__destruct方法?
PHP中的11个魔术方法总结:__construct,__destruct__call等
PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep
PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep