Web aym.pekori.to

assert

(PHP 4, PHP 5)

assert -- assertion が FALSE であるかどうかを調べる

説明

bool assert ( mixed assertion )

assert() は、指定した assertionを調べて、結果が FALSEの場合に適当な動作をします。

assertion が文字列として指定された場合、 assert()によりPHPコードとして評価されます。 文字列 assertionが優れているところは、 assertion のチェックがオフになった場合のオーバーヘッドがより少な いことであり、assertionが失敗した場合のメッセージを式 assertionに有しています。 つまり、もし論理型の条件を assertion として渡した場合、この条件が assert_options() 関数で指定したハンドラ関数への引数とはならないということです。 条件はハンドラ関数をコールする前に文字列に変換され、論理型の FALSE は空文字列に変換されます。

assertion は、デバッグ目的にのみ使用するべきです。 assertion を常にTRUEとなる条件を調べる不具合診断に使用し、TRUEでな い場合に何らかのプログラミングエラーを示したり、extension 関数ま たは特定のシステム制限や機能といった特定の機能の存在をチェックす るために使用することが可能です。

assersion は、入力パラメータのチェックのような通常の実行動作に使 用するべきではありません。一般的には、assertion のチェックが有効 でない場合に自分のコードを常に正常に動作することができる必要があり ます。

assert() の動作は、 assert_options() またはマニュアルの関数の部分 に記述された .ini の設定により設定することが可能です。

関数 assert_options() かつ/または ASSERT_CALLBACK 設定ディレクティブにより失敗したassertionを 処理するコールバック関数を設定することが可能です。

assert() のコールバックは、assertionが発生 した場所に関する情報と共にassertionに渡されたコードを容易にキャ プチャーできるため、特に自動テストセットを構築する際に便利です。 この情報は他の手法でもキャプチャー可能ですが、assertionを使用 することにより、より簡単かつ容易に行なうことが可能です!

コールバック関数は、3つの引数を受ける必要があります。最初の引数 は、assertionが失敗したファイルが含まれます。2番目の引数には、 assertionが失敗した行が含まれ、3番目の引数には失敗した式が含ま れます。(もしある場合のみ。1または"two"のようなリテラルの値はこ の引数に渡されません)

例 1. カスタムハンドラで失敗したassertionを処理する

<?php
// assertを有効にし、出力を抑制する
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);

// ハンドラ関数を作成する
function my_assert_handler($file, $line, $code)
{
    echo
"<hr>Assertion Failed:
        File '$file'<br />
        Line '$line'<br />
        Code '$code'<br /><hr />"
;
}

// コールバックを設定する
assert_options(ASSERT_CALLBACK, 'my_assert_handler');

// 失敗するassertionを作成
assert('mysql_query("")');
?>