我刚刚发现了昂贵的方式(即生产失败)
assert_options(ASSERT_BAIL, true);
assert(false);
终止执行而不发出非零退出代码。感觉就在那里,善良才知道。
我该如何解决这个问题?编辑:没有其他影响输出,例如通过ASSERT_CALLBACK抑制警告。
set_error_handler依赖于Assert()发出警告?我还没找到一些选项?
答案 0 :(得分:0)
您需要使用退出代码
进行回调<?php
function assert_failure()
{
exit(-1);
}
assert_options(ASSERT_BAIL, true);
assert_options(ASSERT_CALLBACK, 'assert_failure');
assert(false);
?>
将输出:
$ php assert.php
$ echo $?
255
你也可以抛出异常:throw new Exception('Assert failed');
而不是退出。
仍然显示警告:
<?php
if(assert(false) == false) exit(-1);
?>
将输出:
$ php assert.php
Warning: assert(): assert(false) failed in /home/user/assert.php on line 9
$ echo $?
255