PHPでプログラムを書いて動かしたら動かない!などということはよくあります。
出来上がったらすぐに動かしたくなりますが、落ち着いて次は文法のチェックです。
目視で確認する方法もありますが、ツールを使う事もおすすめです。
今回は文法チェックについて以下の内容でお話します。
【解説】文法のチェックの必要性
【実践】コマンドラインでチェック
【実践】xdebugでチェック
わかりやすく解説しますので、最後まで読んで頂けると幸いです。
文法チェックが必要な理由
悩んで書いたプログラム、すぐ動かしたいですよね。
しかし、動かすのは少し待ちましょう。
まずは文法チェックを行います。
文法をチェックしておかないとエラーが発生した時に正常に動作しないからです。
そしてエラーの発生原因を一つずつ潰さなければいけません。
文法チェックを一括で行っておけば、そのエラーは発生しない可能性もあります。
遠回りしているようで実は近道の場合もあるため、文法チェックは必ず行いましょう。
lintでチェックしよう
lintを使って静的にチェックします。
静的というのはプログラムを実行せずに、文法の記述方法だけをチェックする方法です。
その時に使用するのは、lintコマンドです。
※php_check_syntaxという文法チェック関数があったのですが、すでに廃止されていますので使用できません。
では実際にエラーの出るphpファイルを準備します。
□lint_test.php
<?php echo "error"
画面にerrorという文言を表示させるだけのコードです。
lint_test.phpがあるディレクトリまで移動して以下のコマンドを発行します。
php -l lint_test.php
□実行結果
PHP Parse error: syntax error, unexpected end of file, expecting ',' or ';' in lint_test.php on line 2 Parse error: syntax error, unexpected end of file, expecting ',' or ';' in lint_test.php on line 2 Errors parsing lint_test.php
syntax error = 構文エラーの指摘が出力されました。
【line 2】のように、エラーの行数も返してくれます。
unexpected end of fileとありますので、2行目に【;】がないのが原因です。
では、lint_test.phpを修正して、再度lintコマンドを発行してみます。
<?php echo "error";
□実行結果
No syntax errors detected in lint_test.php
上記の表示になれば、文法エラーはないという事です。
lintを使った文法チェックについてご理解頂けたでしょうか。
xdebugでチェックしよう
前章では、静的に文法チェックを行う方法をご紹介しました。
本章では動的のエラーチェックのためにxdebugというツールを紹介します。
xdebugの設定
まず、xdebugを使用可能にします。
① xdebugを以下公式サイトからダウンロード、ダウンロードした.dllファイルを置いたローカル環境のパスをメモします。
https://xdebug.org/download.php
② php.iniに以下を追記します。
zend_extension = ★①でメモしたパス
② Webサーバ(Apacheなど)を再起動
以上で設定は完了です。
xdebugでエラーを確認する
それでは、前章で使用したlint_test.phpを実行してみます。
□lint_test.php
<?php echo "error"
最後の【;】が足りていないのでエラーになるはずです。
■画面表示結果
内容はlintを実行した時と同じですが、装飾が付いて見やすくなりました。
またlintとの大きな違いは、コードを実行した結果のエラーなので動的なチェックによるエラーと言えます。
まとめ
今回はPHPの文法チェックについてお話しました。
プログラムが完成した!と思っても安心せずにまずは静的に文法チェックをしましょう。
動かした後のエラー表示もツールを使う事をおすすめします。
それでは、また。