林檎商人のブックの最新の日記
<< 前の日記へ 一覧を見る 次の日記へ >>

 

PHP

PHPをやることになった。
LL系のやわらかい言語を格的にやるのはなんだかんだで初めてなのでいくつか戸惑う点があった。その中で解決方法がよくわからない問題があったので書いてみる。教えてあっくん!

いくつかの手順を踏まないと到達できないページを組んでいるとする。このページには未定義メソッドの実行や未定義変数の参照などのバグが3つあり、これらを全て直さないとページが表示されないとする。このときのデバッグ方法は単純に考えると以下のようになるだろう。


1.いくつかの手順を踏んでページを表示すると最初のバグによるエラーが表示される
2.最初のバグを修正する
3.いくつかの手順を踏んでページを表示すると2番目のバグによるエラーが表示される
4.2つ目のバグを修正する
5.いくつかの手順を踏んでページを表示すると3番目のバグによるエラーが表示される
6.3つ目のバグを修正する
7.いくつかの手順を踏んでページを表示すると正常にページが表示されることを確認する


Javaであれば未定義メソッドの実行はコンパイルエラーで、Eclipseを使っていればコードを書いた瞬間に教えてくれる。ところがPHP(や他のLL系言語)の場合は未定義かどうかは実行時まで確定しないので、普通は実行前にIDEやエディタがエラーを教えてくれない(たぶん)。いくつかの手順を踏まないと到達できないページの場合はさらにデバッグの手間がかさむ。

ぱっと思いつく解決方法としては、
A. そういうエラーを教えてくれるエディタを使う
B. DB/ブラウザの状態/PHPのセッションのスナップショットを取れるようなツール(そんなのあるのか?)を使って途中の手順を省く
C. そんな手順が要るような複雑なページを作らない
D. そんな単純なバグを埋め込まないくらいにPHPに習熟する

といったところだろう。正解はCとDかなぁ?

コメント

akkun_choi 2009-01-23 01:46:58

たぶん、CかDで当たりですw

PDT(eclipseのPHPプラグイン)なら、F3押したら定義済みであればジャンプしてくれるんで、実行前だったらそれで判断するしかないかなぁ(飛ばなかったら未定義)。JavaDocみたいに型名をきちんとかかないと認識してくれないんですけど。

あと、

error_reporting(E_ALL);

すれば、未定義の変数を使った場合にNoticeエラー(軽微なエラー)出すことはできます!

ApplePedlar 2009-01-23 10:16:59

おお、なるほど。
PDT試してみます。型名を書くというのは
http://www.thinkit.co.jp/article/73/3/2.html
↑これのことかな。引数の型が不明で補完できないのは不便だと思ってたけど、これを使えばチェックも補完もできるのか。

ありがとうー

コメントできません (ログインするとコメントできます)