今まで使ったことのなかったPHPのassert関数

何の気なしに

function assert(

とvimで書いたらassertの文字の色が変わった(PHPのネイティブ関数は色分けされる)のであれ?と思い、調べてみたらあった。
simpletestについてくるassertTrue()は使ったことがあったが、純正assertは初めて。まだまだ使ったことのない関数があるものだ。。
PHP: assert – Manual

C言語のassertとは違って引数に文字列を渡すことで便利な動作を期待できる。

assert("strlen($str) == 10");

デフォルトだと、引数の文字列をevalした結果がfalseだとWarningが出る。

assert(strlen($str) == 10);

これでも普通に動く。

assert_options(ASSERT_ACTIVE, 0);

とするとassertは何もしなくなる。このときassertの引数を文字列で渡しているおかげで、オーバーヘッドが少ない、とマニュアルに書いてある。どういう意味かな、と試してみた。

assert(sleep(10));

だとASSERT_ACTIVEに関わらずsleepは実行されるが(よく考えてみればPHPがシーケンシャルに実行される以上当然か)、

assert("sleep(10)");

ならsleepは実行されずにassertがそのまま終了する。

ちょっとしたテストスクリプトで使えるかもしれない。

This entry was posted in いじる. Bookmark the permalink. Both comments and trackbacks are currently closed.

Page optimized by WP Minify WordPress Plugin