Php 获取退出消息以将其用于对象';s__自毁法

Php 获取退出消息以将其用于对象';s__自毁法,php,exit,Php,Exit,你好, 我希望获取退出消息来处理它(例如,在数据库中插入退出状态)。有办法吗 谢谢退出发送的文本并不特别;只是 您可以通过输出缓冲获得文本,但我不确定它是否有用: $fooinstance = new foo(); /*do something*/ exit('bar'); class foo{ __destruct(){ //get the exit message ("bar") to do something with it } } 这是一种不正确的做事方式。为什么需要

你好,

我希望获取退出消息来处理它(例如,在数据库中插入退出状态)。有办法吗


谢谢

退出发送的文本并不特别;只是

您可以通过输出缓冲获得文本,但我不确定它是否有用:

$fooinstance = new foo();
/*do something*/
exit('bar');

class foo{
  __destruct(){
    //get the exit message ("bar") to do something with it
  }
}

这是一种不正确的做事方式。为什么需要这种特殊的解决方案?

这是正确的。。。它支持获取退出消息(以及在此之前发生的所有输出),并将ob_get_contents()之后的所有内容回显到正常输出。是的,我还需要一些数据输出到正常输出,同时得到die()消息。。。此方法可能会占用大量内存,具体取决于输出的字符串。我正在编写的类在出现错误时使用另一个具有“die”(“foobar”)的类。我想生成一个适当的报告来说明失败的原因。您需要将该类中的die()替换为类似“抛出新异常('Error reason');”的内容,然后在外部类中捕获该异常。是的,这是正确的方法。我应该抨击在类中使用“die()”的人,特别是因为他们是程序正常运行所必需的。但我想另一种方法是在另一个进程中使用另一个类,并以某种方式获得其输出:字符串缓冲,将缓冲字符串放入一个文件中,然后通过父进程或类似的方式获取文件内容。从PHP派生进程只是为了从另一个脚本获取结果是另一个坏主意,对不起;)
<?php
$fooinstance = new foo();
ob_start();
exit('bar');

class foo{
  function __destruct(){
    $c = ob_get_contents(); //$c is "bar"
  }
}