PHP 7 の例外は、下位互換性と古いassert() 関数の拡張のために使用されます。これにより、運用環境でゼロコストのアサーションが可能になり、カスタム例外やエラーをスローする機能が提供されます。
API の古いバージョンは、互換性の目的で引き続き維持されます。assert() は、最初のパラメーターを計算する文字列やテストするブール値だけでなく、式にすることができる言語構造になりました。
assert() は、
パラメータ
- assertion
アサーションを設定します。 PHP 5 では、実行用の文字列またはテスト用のブール値。 PHP 7 では、これは任意の値を返す式にすることができ、その結果はアサーションが成功したかどうかを示すために使用されます。
- description
assertion
が失敗した場合、オプションの説明が失敗メッセージに含まれます。- 例外
PHP 7 では、2 番目のパラメーターは文字列ではなく Throwable オブジェクトにすることができます。これは、アサーションが失敗し、assert.Exception が有効な場合にスローされます。
インスタンス
zend.assertions を 0 に設定します:
インスタンス
<?php ini_set('zend.assertions', 0); assert(true == false); echo 'Hi!'; ?>
上記のプログラム実行出力は次のとおりです:
Hi!
zend.assertions を 1 に設定し、assert.Exception を 1 に設定します:
例
<?php ini_set('zend.assertions', 1); ini_set('assert.exception', 1); assert(true == false); echo 'Hi!'; ?>
上記のプログラムの実行出力結果は次のとおりです:
Fatal error: Uncaught AssertionError: assert(true == false) in -:2 Stack trace: #0 -(2): assert(false, 'assert(true == ...') #1 {main} thrown in - on line 2