コーディング規約を遵守したコードを書くために、静的解析ツールである PHP CodeSniffer を導入します。本記事では、自分が作成したプログラムに対してPSR-2コーディング規約に準拠しているかチェックを行い、実際に指摘された内容を一覧化します。また、エラーの解消方法についても示します。
今後のプログラミング学習において、今回の指摘内容を留意し、コーディング規約を遵守した可読性の高いコードを書くようにしていきたいと思います。
指摘事項一覧
PSR-2コーディング規約に違反していると指摘を受けた項目を一覧にし、それぞれのエラーの解消方法を示します。
Each class must be in a file by itself
このエラーメッセージは、PHPのクラス宣言が一つのファイルに含まれているべきであるという規則に違反している場合に表示されます。PHPにおいては、1つのファイルに1つのクラスを含めることが推奨されています。
このエラーを解消するには、複数のクラスを含んだファイルをクラスごとに分割し、個別のファイルに保存します。これにより、コードが構造化され、理解しやすくなります。
End of line character is invalid; expected "\n" but found "\r\n”
このエラーメッセージは、PHPコード内の改行文字が期待される "\n"(LF、ラインフィード)ではなく、"\r\n"(CRLF、キャリッジリターンとラインフィード)という文字列を見つけたことを示しています。通常、改行文字はUnix系システムでは "\n" で表され、Windows系システムでは "\r\n" で表されます。PHPコーディング規約ではUnix系の改行文字 "\n" を使用することが一般的です。
このエラーを解消するには、Windows形式の "\r\n" を "\n" に変更する必要があります。
Each class must be in a namespace of at least one level (a top-level vendor name)
このエラーメッセージは、クラスが名前空間内に存在しない場合に発生します。名前空間は、クラスや他の型を包むコンテナのようなもので、使用することでクラス名の衝突を防ぎ、コードを整理できます。
このエラーを解消するには、最低でも一つの階層(トップレベルのベンダー名)を持つ名前空間を作成し、クラスを名前空間内に配置する必要があります。
Opening brace of a class must be on the line after the definition
このエラーメッセージは、クラスの定義時に、クラス名と波括弧({)の開き括弧が同じ行に書かれている場合に表示されるエラーメッセージです。
このエラーを解消するには、クラスの定義スタイルを変更して、クラス名と波括弧の開き括弧を別々の行に配置する必要があります。
Opening brace should be on a new line
このエラーメッセージは、波括弧({)の開き括弧が新しい行ではなく、他のコードの同じ行にある場合に表示されます。
このエラーを解消するには、条件文(ifなど)の直後の波括弧の開き括弧を新しい行に配置する必要があります。
Line indented incorrectly; expected at least 8 spaces, found 6
このエラーメッセージは、コードのインデントに関するものです。特定の行のインデントが期待されるよりも少ないスペースで行われている場合に表示されます。この例では、最低8スペースのインデントが期待される場合に、6スペースのみであったことを示しています。
このエラーを解消するには、該当の行に対して正しい数のスペースを追加してインデントを修正する必要があります。
Expected 1 space(s) after closing parenthesis; found newline
このエラーメッセージは、PHPファイル内で閉じ括弧の後にスペースが1つ必要であるべきで、代わりに改行が見つかったことを示しています。
このエラーを解消するには、閉じ括弧の後にスペースを追加する必要があります。
A closing tag is not permitted at the end of a PHP file
このエラーメッセージは、PHPファイルの末尾に閉じるPHPタグ(?>)がある場合に表示されるエラーメッセージです。PHPファイルの末尾に閉じるPHPタグを付ける必要はありません。閉じるPHPタグを省略することにより、意図しない空白や改行が出力されなくなり、潜在的なエラーを防ぐことができます。また、閉じるPHPタグがあると、それが原因でヘッダーの送信が遅れる可能性があるため、省略するのが推奨されています。
このエラーを解消するには、PHPファイルの末尾にある閉じるPHPタグ(?>)を削除します。
Expected 1 newline at end of file; 0 found
このエラーメッセージは、ファイルの最後に空行が1行ない場合に表示されます。
このエラーを解消するには、ファイルの末尾に空白行を追加します。PHPファイルの末尾には、閉じるPHPタグ(?>)は必要ありませんが、空白行を追加する必要があります。