バックグラウンド
私が C プログラミングを行っていた頃は、コードが正常であることを確認するために想定ステートメントを使用していました。何かのようなもの:
aFunction(int hello)
{
assume(hello < 10);
assume ステートメントの優れた点は、リリース コンパイルでは空のマクロであり、デバッグ コンパイルでは false ステートメントで die するように定義されていることです。したがって、開発者は、不必要なバグを発生させたり、パフォーマンスに影響を与えたりすることなく、仮定をチェックする assert ステートメントのすべての利点を得ました。
問題
今、私は 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 を使用しています) に指示する方法はありますか? または、この問題を処理する別の方法はありますか?