PHP 7 例外

PHP 7 新特性PHP 7 新機能

PHP 7 の例外は、下位互換性と旧 assert() 関数の拡張のために使用されます。本番環境でゼロコストのアサーションを実現し、カスタム例外やエラーをスローする機能を提供します。

旧バージョンの API は互換性の目的で引き続きメンテナンスされます。assert() は現在言語構造であり、最初のパラメータとして、評価される string やテストされる boolean だけでなく、式を受け取ることができます。


assert() 設定

設定項目デフォルト値オプション値
zend.assertions1
  • 1- コードを生成して実行 (開発モード)

  • 0- コードを生成するが、実行時にはスキップする

  • -1- コードを生成しない (本番環境)

assert.exception0
  • 1- アサーション失敗時にスローします。例外オブジェクトをスローできます。例外が提供されない場合は、AssertionError オブジェクトのインスタンスがスローされます。

  • 0- Throwable を使用または生成します。オブジェクトをスローするのではなく、オブジェクトに基づいて生成された警告のみです (PHP 5 と互換性あり)

パラメータ

assertion

アサーション。PHP 5 では、実行する文字列またはテストするブール値です。PHP 7 では、任意の値を返す式にすることができ、その実行結果がアサーションが成功したかどうかを示すために使用されます。

description

もしassertion失敗した場合、オプション description が失敗情報に含まれます。

exception

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

PHP 7 新特性PHP 7 新機能

その他の拡張機能