PHP测试致命错误

这有点远,但我想我仍然会问。 我有一个基于Web的代码编辑的应用程序,就像你在Github上使用ACE编辑器一样。 问题是,可以编辑应用程序本身内的代码。

在保存文件之前,我已经设法检测到分析错误,这很好,但如果用户创建运行时错误(如MyClass extends NonExistentClass ,文件将通过分析检查,但保存到文件系统中,从而终止应用程序。

无论如何要测试新代码在将其保存到文件系统之前是否会导致运行时错误? 似乎完全违反直觉,但我想我会问。


可能使用register_shutdown_function来构建一个包含致命错误信息的JSON对象。 然后使用AJAX调用来测试该文件; 解析来自调用的返回值以查看是否有错误。 (很明显,你也可以运行PHP文件并在不使用AJAX的情况下解析JSON对象,只是从UX的角度考虑什么是最好的)

function my_shutdown() {
    $error = error_get_last();
    if( $error['type'] == 1 ) {
        echo json_encode($error);
    }
}
register_shutdown_function('my_shutdown');

会输出类似的东西

{"type":1,"message":"Fatal error message","line":1}

把它放在测试文件的开头,然后:

$.post('/test.php', function(data) {
    var json = $.parseJSON(data);
    if( json.type == 1 ) {
        // Don't allow test file to save?
    }
});

可能有用:如果有运行时错误, php -f <file>将返回一个非零的退出代码。


也许首先在单独的文件中运行代码并在底部附加一些固定代码以检查它是否评估?

链接地址: http://www.djcxy.com/p/56277.html

上一篇: PHP test for fatal error

下一篇: Media query to differentiate desktop from iPad in landscape mode