[PHP-users 1483] assert() のすすめ (Re: echo() と print() の違いについて)

SAWADA Hodaka php-users@php.gr.jp
Fri, 24 Aug 2001 13:13:03 +0900


At Fri, 24 Aug 2001 11:11:08 +0900,
Naofumi Kondoh wrote:

> > define("DEBUG",1);
> > 
> > function debugprint($msg){
> >     if (DEBUG) echo "debug:".$msg;
> > }
> 
> PHP は マクロがないのでデバッグ文のある行番号を示す
> __FILE__, __LINE__ 定数をプログラムに明記しなければ
> ならないので、私は、次のスタイルです。
> # vi  の map でワンタッチ挿入できるようにしてます。
> 
> if(dbg>=3)printf("<font size=5 color=purple><B>%s.L%04d:
>   $hoge </B></font><br>\n",basename(__FILE__),__LINE__);

みなさん、debug 表示にいろんな方法を使っておられますが、
PHP4 ならば assert() というものがあります。
http://www.php.net/manual/ja/function.assert.php

・php.ini や、assert_options() 等で、制御が可能。
・assertion を殺したときは、条件判断そのものがなくなるので、
実行速度的に有利。#source を見たわけじゃないですけど。

file, line, code が、コールバック関数に渡されるので、
近藤さんでも安心して使えます。(^^;;;)


簡単に試すならば、
<?php
assert_options (ASSERT_ACTIVE, 1);
assert ('1==0');
?>
で、結果を見てくださいまし。
1==0 という code は偽なので、assert が発動します。

p.s.
あと、echo, print 族に追加するなら、
致命的な message 表示には die() をよく使ってます。
-- 
         =^^= HODA =^^=          http://www.tail.gr.jp/~hoda/
澤田保隆@しっぽアルゴリズム情報研究所  mailto:hoda@tail.gr.jp