我发现在PHP类的file_put_contents
内编写(fwrite
或简单__destruct()
)是不可能的,如何调用它?全功能:
function __destruct()
{
foreach($this->data as $name=>$value) $$name=$value;
if(count($this->modules)>0)
{ foreach($this->modules as $name=>$value)
{
ob_start();
include $value;
$content=ob_get_contents();
ob_end_clean();
$$name = $content;
}
}
ob_start();
include $this->way;
$content = ob_get_contents();
ob_end_clean();
$fp = fopen('cache.txt', 'w+');
fputs($fp, $content);
fclose($fp);
echo $content;
}
答案 0 :(得分:-1)
你可能遇到的问题是你仍在引用你的destruct()中的对象。
根本不应该写入__destruct中的文件。以下示例证明了这一点:
<?php
class TestDestruct{
function __construct(){
$this->f = 'test';
}
function __destruct(){
print 'firing';
$fp = fopen('test.txt', 'w+');
fputs($fp, 'test');
fclose($fp);
}
}
$n = new TestDestruct();
empty($n);
请记住,只有在没有对该对象的引用时才会触发destruct。所以,如果你要做的事情
fputs($fp, $this->f)
然后它不起作用。