「PHPでバグの直し方、デバッグの仕方1」の編集履歴(バックアップ)一覧に戻る

PHPでバグの直し方、デバッグの仕方1 - (2015/08/14 (金) 20:52:41) のソース

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>";
 }
 ?>
バックアップ代わりにもなって便利です。複数にわたってコメントアウトしたい場合は/* */を利用するといいと思います。
~
~
以上