背景
回到我做 C 编程的那一天,我们使用假设语句来确保代码是健康的。就像是:
aFunction(int hello)
{
assume(hello < 10);
假设语句很酷的一点是它被定义为一个用于发布编译的空宏和一个在调试编译时的错误语句上死掉。因此,开发人员拥有断言语句检查他们的假设的所有好处,而不会导致不必要的错误或影响性能
问题
现在我正在使用 php,我正在寻找类似的机制。我目前的假设声明看起来像这样:
define(DEBUG, getenv('debug'));
function assume($a)
{
if (DEBUG && !$a)
{
echo 'ASSUME FAILURE <br />';
echo '<pre>';
print_r(debug_backtrace());
die('<pre>');
}
}
assume($a == $b);
如您所见,我在服务器设置中设置了调试标志以删除实际的 die 语句等。但是,仍会执行函数调用,并且仍会评估 if 语句。如果它只发生几千次,这没什么大不了的,但是随着代码变得越来越大,并且这些假设被放入循环中,这可能会对性能产生合理的影响。
问题
有没有办法告诉解释器或 opcache(我目前正在使用 php 5.5 中包含的 zend opcache)完全忽略这些假设语句?还是有另一种处理这个问题的方法?