即使构造函数抛出异常,PHP ReflectionClass也会调用Destructor

时间:2015-05-09 14:47:39

标签: php reflection constructor

我在这里得到了PHP 5.4的奇怪行为。假设以下代码:

class ExceptionDuringConstruction
{
    public function __construct() {
        echo '<br />construct before exception';
        throw new Exception('construction failed');
        echo '<br />construct after exception'; // unreachable, just checking
    }

    public function __destruct() {
        echo '<br />destruct';
    }
}

$reflection = new \ReflectionClass('ExceptionDuringConstruction');
$instance   = $reflection->newInstance();

以上代码打印:

construct before exception
destruct

这可能是对的,还是我错过了什么?如果我使用NEW做同样的事情,一切都像预期的那样工作,没有Destructor被调用。对我来说,这看起来像一个错误 - 任何意见?这是否已知(没有发现任何东西)?

PS:因为这是我在这里的第一个问题,但我已经阅读了很长时间 - 谢谢你这个伟大的网站!它几乎总是如下:Google&gt; Stackoverflow&gt;解决方案机智很好解释: - )

0 个答案:

没有答案