PHPを学習していく際に重要なことの一つに、デバッグを直す訓練をするということです。PHPでバグを直すことは結構大変です。今回は、バグを見つける方法について記述していきたいと思います。8月15日記事 ~ ~ 目次 #contents ~ ~ ---- ~ *バグについて プログラムがうまく動かない現象。&color(red){ほとんど(というよりほぼすべて)が人間による入力ミスです。}パソコンがおかしい!というような思いこみをせず、自分が悪いというように思うようにしましょう。 ~ ~ *echo,print関数を利用して、変数に格納されている情報を見る。 変数を使いまわしていたり、関数を利用して計算していたりすると、この変数にはどういうものが入っているのだろうか。と確認する必要があるということです。 ~ ~ 例:曜日番号を取得させるプログラム <?php //日付を表示させる header("Content-Type: text/html; charset=UTF-8"); $y = 2015; $m = 8; $wdl = date("w", mktime(0, 0, 0, $m, 1, $y));//タイムスタンプを取得して 曜日番号を取得する /* このあと様々なプログラムを書いていったとする・・・。でもwdlにどういう値がはいっているのかわからない。 */ //例えば2015年8月は何曜日からはじまるかを書いた場合。 //$wdlに関数を通じて何か値や文字列が取得されたのだから、どんなものが入っているのかを確認する。 echo $wdl."<br>"; //または print $wdl."<br>"; //というように記述する。 //echo $wdl."<br>"; 確認し終わったらこのようにコメントアウトしておく。またバグがあったときにすぐ呼び出せるので便利 ?> SQL文と絡み合う場合、sqlコマンドをechoなどで出力して、その結果をphpmyadminかコンソールからSQLコマンドを入力して結果を確かめることも一つの手です。 ~ ~ *コメントアウトを利用する 長いコードを1行に書いていったりして、そのコードを色々といじると、元のコードがなんだかわからなくなってしまいます。そんな中、元のコードを改変したい場合、そのバックアップをとるのにコメントアウトを利用します。 ~ ~ 例:if文とかfor文で長い表記がある場合 <?php if(preg_match("/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/",$url)){ echo "正しいURLです。<br>"; }else{ echo "間違いなURLです<br>"; } //これを次のように変えてちょこちょこいじる。 if(preg_match("/^(https?)なんちゃら~~~といじる",$url)){ //if(preg_match("/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/",$uri)){どちらかの行をかえてちょこちょこいじる。 echo "正しいURLです。<br>"; }else{ echo "間違いなURLです<br>"; } ?> バックアップ代わりにもなって便利です。複数にわたってコメントアウトしたい場合は/* */を利用するといいと思います。 ~ ~ 以上