こんにちは!独学プログラマー&ライターのつぶらやです。
PHPでプログラムを書いて、いざ動かそうとした時にエラーとなって動かないという経験は誰にでもあります。
本日はプログラムを動かす前に構文チェックをする以下のような方法についてお話したいと思います。
・構文チェックはなぜ必要?
・lintを使ってコマンドラインからチェックする方法
・runkit_lint関数を使ってコードを直接チェックする方法
それでは説明していきます。
構文チェックはなぜ必要?
まず、構文チェックはなぜ必要なのでしょうか。
例えば以下のようなコードは構文エラー(シンタックスエラー)となり動作しません。
test1.php <?php $i = 1; // $iに1を代入 if($i == 1){ // $iが1だった場合という判定をしたい echo "さむらい"; ?>
理由はifを閉じるための}がないからです。
正しくは以下です。
test2.php <?php $i = 1; // $iに1を代入 if($i == 1){ // $iが1だった場合という判定をしたい echo "さむらい"; } ?>
プログラムには書くためのルールがあります。
きちんと記述したと思っていても大量のコードを書くと知らない内にミスをしている場合もあります。
事前にチェックしておく事によって実行した時のエラーを防ぐことが出来るのです。
構文チェックが必要な理由はお分かりいただけましたでしょうか。
それでは続いて、構文チェックのためのコマンドや関数の使い方を解説します。
コマンドラインからチェック(lint)
コマンドラインからチェックできるという事は、phpファイルを丸ごとチェックできるという事です。
チェックのためだけに関数をコードの中に書き入れる必要はありません。
コマンドラインについてよくわからない方は以下の記事を参考にしてください。
エラーチェック方法
前章で使用したtest1.phpを使用して、コマンドラインでチェックしてみましょう。
test1.php <?php $i = 1; if($i == 1){ echo "さむらい"; ?>
以下の様にコマンドを発行します。
php -l test1.php
結果 PHP Parse error: syntax error, unexpected end of file in test1.php on line 5 Errors parsing test1.php
上記のエラーが出ました。
間違っている行数も【on line 5】のように出るのでわかりやすいですね。
慣れてくると大丈夫だろうと構文のチェックが面倒で未チェックで実行したくなると思います。
ぐっとこらえて構文チェックを行ってください。
どんな慣れた人でもミスは起こります。
エラーの修正
構文チェックをしてエラーがわかったら修正して再度チェックをしましょう。
前章で使用したtest1.phpを修正したtest2.phpを使用して、コマンドラインでチェックしてみましょう。
test2.php <?php $i = 1; if($i == 1){ echo "さむらい"; } ?>
以下の様にコマンドを発行します。
php -l test2.php
結果 No syntax errors detected in test2.php
このような表示になれば構文エラーはないという事です。
コードを直接チェック(runkit_lint)
続いて、PHPのコードの中でチェックできるrunkit_lintという関数があります。
この関数はPECL(ピクル)というPHP用のライブラリが入っていないと使用することが出来ません。
またスレッドセーフを有効にしておく必要があり、特別な環境でしか使用できません。
こちらの記事では公式のページの紹介のみにさせて頂きます。
http://php.net/manual/ja/function.runkit-lint.php
コードの中で、一部分だけチェックという時に使用できると思います。
興味のある方は環境を準備して試してみてください。
まとめ
本日はPHPの構文エラーのチェック方法についてお話しました。
今回は簡単な構文チェックのみを検出する方法でしたが、IDE(統合開発環境)を使用するともっと細かくチェックできます。
構文エラーはもちろんの事、記述されている変数が使用されているかどうかも判定してくれたりします。
他にもプログラムのチェックのためのツールがあります。
興味があればネットで検索してみてください。
それでは、また。