今まで使ったことのなかった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. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Page optimized by WP Minify WordPress Plugin