全くコメントが入っていないPHPのソースを見る機会があった。
とっても綺麗にソースがパーツ化されているので・・・全く読めない。
ブラウザでHTMLソースを見るとPHPソースのつなぎ目が見つからない。
仕方が無いので、PHPの先頭と末尾にファイルの始めと終わりのコメントを入れようと思ったが、
全ファイルに入れるとsvnリポジトリィで全ファイルに変更が入ってしまうと、
後で訳が分からなくなってしまいそうだ。
なので、とりあえず・・・
sed でパパっとコメントを入れる。
find . -name "*.php" | grep -v "除外するファイル名" | xargs sed -i '1i<?php debugComment(); ?>'
find . -name "*.php" | grep -v "除外するファイル名" | xargs sed -i '$a<?php debugComment(); ?>'
ちょっとだけ、1行で済ませられないのかな?と思った。
echo ““; cat $1; echo “;” > $1
という手もあるような・・・無いような・・・
※多分、ファイルが空になってしまうのでやらないように
| grep -v “除外するファイル名” は HTMLタグを埋め込めこむと、エラーになってしまうようなコードの書き方をしているファイルたちのためのもの。
※namespace とか 色々ありそう。
適当な場所に
require_once ("debugComment.php")
呼び出す中身はこんな感じ・・・
function debugComment() { $bt = debug_backtrace(); if [ $bt[0].[__LINE__] = 1 ]; then $MARK="Begin"; else $MARK="End"; fi echo "<!-- $MARK $bt[0].[__FILE__] -->"; }※末尾に自動的に改行(LF)が入るらしい。しかし、CRLFにしてるソースだと紛らわしいので、そんなときは\rも付ければいい。
デバッグが終わったら、デバッグ・コメントをパパっと消そう。find . -name "*.php" | xargs sed -i 's/^<?php debugComment(); ?>$/d'これで消えるハズ(多分)なので、安心してデバッグしようとしたら・・・
実際に画面を表示させてみると最初の画面が内部エラー(=500)。
debugCommentをrequire_onceで呼び出しているドコかのPHPソースでハマってしまったらしい。
debugComment()のファイルにもデバッグコメントのコードが付いてしまいループ。
これは、__FILE__ と $bt[0].[__FILE__] が一致したらすり抜けるようにすればOKだ。
他にもHTMLデータ作成とは無関係なコードも無駄にデバッグ・コメントを吐くので、同様にファイル名が一致したらすり抜けるようにする。
※ソースやコマンドは思い出しながら書いたのでミスが含まれています。(十中八苦