PSR-0、PSR-1、PSR-2、PSR-3とはこんにちは、@9ensanです。PHPには、今まで様々なコーディング規約があり、例えばWordPressPearZendCakePHPSymfonyCodeIgniterなどなどです。ここまで、それぞれでコーディング規約があり統一が取られておらずまた、その為に独自のコーディング規約を作る人もいました。これに対して、「PHP-FIG」という有名なPHPのプロジェクトが参加しているグループが、共通点をルール化して、新しいコーディング規約を作成しています。それが「PSR-0、PSR-1、PSR-2、PSR-3」です。これからのPHPのコーディング規約はPSRに従うのが一番だと思います。様々な有名フレームワークもPSRに従うように修正が加えられています。PSRの日本語化リンクPSR-0、1、2は日本語化してくれている人がいるので読んでみるのが一番です。PSR-0PSR-1PSR-2参考URL一番PSRを勉強するのに参考になるまとめられているサイトです。2を日本語に翻訳してみましたここから先は自分の為の覚書です。Nameについて名前空間を汚さない為に、固有のベンダー名を最初に付ける。Namespaceについて自由に名前空間をつけていい。Nameについてクラス名にアンダースコアが含まれる場合、「DIRECTORY_SEPARATOR」に変換されファイルパスとします。「.php」付けてファイルパスとします。Namespaceの区切り文字について名前空間の区切り文字は「DIRECTORY_SEPARATOR」に変換されファイルパスとします。上記ルールで作成された、ファイルパスを元に対象ファイルを探してオートロードします。PSR-0のオートローダー実装例PSR-1基本的なコーディング規約PHPタグ「<?php」「<?=」のどちらかを使用しなければならない。文字コードUTF-8のBOM無しを使用する。名前空間とクラス名PSR-0に準拠する。クラスはそれぞれ単独でファイルに存在し、少なくとも1レベルの名前空間に属する。全て大文字で、区切り文字はアンダースコアで記述する。プロパティStudlyCaps記法、camelCase記法、under_score記法のどれで記述するか特定しない。ベンダーレベル、パッケージレベル、クラスレベル、メソッドレベルでは統一が取れているべきである。メソッドcamelCase記法で記述します。副作用クラスの定義と、読み込んだだけで何かしらの影響を与える事を同一ファイルに記述しない。PSR-2コーディングスタイル規約(PSR-1に準拠する事が前提)ファイル改行コードはLFを使用する。ファイルの最後に空行を入れる。絶対的な文字数制限はしない、120文字でゆるい文字数制限を設ける。1行は80文字以内にするべき、80文字を越える場合は複数行に改行する。行末に空白文字列を記述してはいけない。読みやすくしたり、関連性を示す為に適度に空行を加えて構わない。1行は1ステートメントにする。インデント4つのスペースを使用する。(タブを使用してはいけない)予約語とTrue/False/Null予約後は小文字で記述する。PHPのコンスタント値「true」「false」「null」は小文字で記述する。名前空間の定義の後に空行を1行設ける。useは、名前空間宣言の後に記述する。宣言1つずつuseを記述します。useブロックの後に空行を1行設ける。クラス、extends、implementsextendsとimplementsは、クラス名と同じ行で記述する。開きカッコ「{」は、次の行に記述する。閉じカッコ「}」は、内容を記述した次の行に記述する。implements定義は、インデントで揃えて複数行にまたがるように記述してもよい。その場合は、最初の記述も次の行からはじめて1行に1つのインターフェース名を記述する。プロパティアクセス修飾子を全てのプロパティに記述する。「var」は使用してはいけない。1行に1つのプロパティを宣言する。protectedやprivateを宣言するのにアンダースコアを使用してはいけない。メソッドアクセス修飾子は記述する。protectedやprivateを宣言するのにアンダースコアを使用してはいけない。メソッド名の後ろにスペースは開けない。開きカッコ「{」は、次の行に記述する。閉じカッコ「}」は、内容を記述した次の行に記述する。開きカッコの後、閉じカッコの前にスペースは記述しない。引数は、それぞれのカンマの前にスペースを記述しない。カンマの後ろには1つスペースを記述する。デフォルト値は、引数リストの最後に記述する。引数は、インデントで揃えて複数行にまたがるように記述してもよい。その場合は、最初の記述も次の行からはじめて1行に1つの引数を記述する。引数を複数行に記述した場合は、引数の閉じカッコ「)」とメソッドの開きカッコ「{」はスペースを挟んで同じ行に記述する。abstruct、final、staticabstruct、finalはアクセス修飾子の前に記述する。staticはアクセス修飾子の後ろに記述する。メソッド、関数呼び出しメソッド、関数呼び出し時は、開きカッコ「(」の前にスペースを記述してはいけない。開きカッコ「(」の後ろ、閉じカッコ「)」の前にもスペースを記述してはいけない。引数の前にスペースを記述をしてはいけない。各カンマの後ろにスペースを1つ記述する。引数は、インデントにより揃える事で複数行に記述してもよい。その場合は、最初の記述も次の行からはじめて1行に1つの引数を記述する。if、elseif、elseifの後ろにスペースを記述する。elseif、elseの前後にスペースを記述する。開きカッコ「{」、閉じカッコ「}」は、if、elseif、elseと同じ行に記述する。最後の閉じカッコは本文の最後の次の行に記述する。switch、caseswitch、caseの後ろにスペースを1つあける。case文はswitch文からインデントする。breakはcase文の中の本文と同じインデントで記述する。break」のようにコメントを記述する。最後の閉じカッコは本文の最後の次の行に記述する。whilewhileの後ろにスペースを1つ記述する。開きカッコはwhileと同じ行に記述する。doの後ろにスペースを1つ記述する。do-whileの場合、whileの前後にスペースを1つ記述する。最後の閉じカッコは本文の最後の次の行に記述する。forforの後ろに1つスペースを記述する。セミコロンの後ろは1つスペースを記述する。開きカッコ「{」はforと同じ行に記述する。最後の閉じカッコは本文の最後の次の行に記述する。foreachforeachの後ろに1つスペースを記述する。開きカッコ「{」はforと同じ行に記述する。最後の閉じカッコは本文の最後の次の行に記述する。try、catchtryの後ろに1つスペースを記述する。catchの前後に1つスペースを記述する。try、catchと同じ行に開きカッコ、閉じカッコは記述する。最後の閉じカッコは本文の最後の次の行に記述する。Closurefunctionの後ろにスペースを1つ記述する。useの前後にスペースを1つ記述する。開きカッコはfunctionと同じ行に記述する。最後の閉じカッコは本文の最後の次の行に記述する。引数の開きカッコの後ろにスペースを記述してはいけない。引数の閉じカッコの前にスペースを記述してはいけない。引数の前にスペースは記述してはいけない。引数の各カンマの後はスペースを記述する。デフォルトの値を持つ引数は最後に記述する。引数は、インデントにより揃えて複数行に記述してもよい。その場合は、最初の記述も次の行からはじめて1行に1つの引数を記述する。引数を複数行に記述する場合、開きカッコ「{」は引数の閉じカッコ「)」と同じ行に記述する。クロージャが引数に直接記述された場合も同様のルールとなる。PSR-3ログのインターフェース規約PSR-3結構今まで自分か書いてきているものと違うルールもありますが、こんな感じで「PHP-FIG」が新基準を決めてくれているのでPHPでもコーディング規約にもう迷わないで済みそうです。コムテブログ返信をキャンセルする。Later」に機能追加しました。Fixer」INFORMATION最近、Arduinoに興味あります。