| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
assert(PHP 4, PHP 5, PHP 7) assert — assertion が 説明PHP 5 および PHP 7 PHP 7
assert() は、指定した
従来のアサーション (PHP 5 および 7)
assertion は、デバッグ目的にのみ使用するべきです。
assertion を常に assersion は、入力パラメータのチェックのような通常の実行動作に 使用するべきではありません。一般的には、assertion のチェックを無効にしても そのコードが正常に動作しなければなりません。 assert() の動作は、 assert_options() またはマニュアルの関数の部分 に記述された .ini の設定により設定することが可能です。
関数 assert_options() や
assert() のコールバックは、assertion が発生した場所に関する情報と共に assertion に渡されたコードを容易にキャプチャーできるため、 特に自動テストセットを構築する際に便利です。 この情報は他の手法でもキャプチャー可能ですが、assertion を使用することにより、より簡単かつ容易に行なうことが可能です!
コールバック関数は、3つの引数を受ける必要があります。最初の引数は、
assertionが失敗したファイルが含まれます。2番目の引数には、
assertionが失敗した行が含まれ、3番目の引数には失敗した式が含まれます
(もしある場合のみ。1 または "two" のようなリテラルの値は、
この引数に渡されません)。
PHP 5.4.8 以降では、オプションの4番目の引数を指定できます。これを設定すると、
Expectation (PHP 7 のみ)assert() は PHP 7 で言語構造となり、expectation の定義を満たすようになりました。 すなわち、開発環境やテスト環境では有効であるが、運用環境では除去されて、まったくコストのかからないアサーションということです。 下位互換性を保つために、assert_options() でこれらの挙動を制御することもできますが、 PHP 7 以降でしか使わないコードでは、新たに導入された二つの設定ディレクティブを使って assert() の挙動を制御しましょう。 そして assert_options() は使わないようにしましょう。
パラメータ
返り値
アサーションが false となった場合に 変更履歴
例従来のアサーション (PHP 5 および 7)
例1 失敗した assertion をカスタムハンドラで処理する
<?php
例2 カスタムハンドラを使った説明の表示
<?php 上の例の出力は以下となります。 Assertion failed at test.php:21: 2 < 1 Assertion failed at test.php:22: 2 < 1: Two is less than one Expectation (PHP 7 のみ)例3 自作の例外を指定しない expectation
<?php zend.assertions が 0 の場合は、上の例の結果は次のようになります。 Hi! zend.assertions が 1、かつ assert.exception が 0 の場合は、上の例の結果は次のようになります。 Warning: assert(): assert(true == false) failed in - on line 2 Hi! zend.assertions が 1、かつ assert.exception が 1 の場合は、上の例の結果は次のようになります。 Fatal error: Uncaught AssertionError: assert(true == false) in -:2 Stack trace: #0 -(2): assert(false, 'assert(true == ...') #1 {main} thrown in - on line 2 例4 自作の例外を用いた expectation
<?php zend.assertions が 0 の場合は、上の例の結果は次のようになります。 Hi! zend.assertions が 1、かつ assert.exception が 0 の場合は、上の例の結果は次のようになります。 Warning: assert(): CustomError: True is not false! in -:4 Stack trace: #0 {main} failed in - on line 4 Hi! zend.assertions が 1、かつ assert.exception が 1 の場合は、上の例の結果は次のようになります。 Fatal error: Uncaught CustomError: True is not false! in -:4 Stack trace: #0 {main} thrown in - on line 4 |
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「assert - assertion が FALSE であるかどうかを調べる」をGoogle検索
|