PSR
は PHP Standard Recommendation の略称で、実際には PSR と呼ばれる必要があります。これは一連の推奨標準です。現在承認されている仕様には、PSR-0 (Autoloading Standard)、PSR-1 (Basiccoding Standard)、PSR- が含まれます。 2 (コーディング スタイル ガイド)、PSR-3 (ロガー インターフェイス)、PSR-4 (改良された自動読み込み)。これは公式の PHP 標準ではありませんが、Zend や Symfony2 などの有名な PHP プロジェクトから抽出された一連の標準です。現在、ますます多くのコミュニティ プロジェクトがメンバーとして参加し、この標準に従っています。
PHP-FIG — PHP Framework Interoperability Group は、PSR の開発仕様を策定する組織であり、そのメンバーは多くの有名な PHP コミュニティ プロジェクトで構成されています。公式 Web サイトのホームページの下部にメンバー リストが表示されます。これらのメンバーは仕様を開発し、プロジェクトに実装します。
実際、各 PSR 仕様の内容は非常に簡潔かつ明確で、数十ページにわたる仕様よりもはるかに優れています。
PSR-0 (Autoloading Standard)
PSR-0はクラス自動ローディング仕様です(原文:公式サイト、GitHub)。 2014 年 10 月 21 日の時点で、この仕様は非推奨としてマークされており、PSR-4 に置き換えられています。その内容は非常に簡潔です。
内容:
完全修飾された名前空間とクラス名は、「<ベンダー名>(<名前空間>)*<クラス名>」の構造を持つ必要があります
各名前空間には、トップレベルの名前Space( 「ベンダー名」)
各名前空間には、任意の数のサブ名前空間を含めることができます
各名前空間は、ファイル システムからロードされるときに「オペレーティング システム パス区切り文字」(DIRECTORY_SEPARATOR) に変換する必要があります
すべての「_」文字は「クラス名」は DIRECTORY_SEPARATOR に変換されます。 「_」記号は名前空間では明確な意味を持ちません
命名標準に準拠した名前空間とクラス名は、ファイルをロードするには「.php」で終わる必要があります
ベンダー名、名前空間、クラス名は大文字で構成できますマルチシステムの互換性を確保するために、名前空間とクラス名では大文字と小文字が区別されます
PSR-1 (基本コーディング標準)
PSR-1 は、基本的なコーディング標準です (原文: 公式 Web サイト、GitHub)。内容もクラスファイルの命名方法やクラス名、クラスメソッド名など非常に簡潔です。
内容:
ソースファイルでは
ソースファイル内のphpコードのエンコード形式はBOMなしのUTF-8のみを使用する必要があります
ソースは1つですファイル提案 これは、宣言 (クラス、関数、定数など) を行うため、または副作用を引き起こす一部の操作 (例: 情報の出力、.ini 構成ファイルの変更など) を実行するためにのみ使用されますが、使用すべきではありません。
名前空間とクラスは PSR-0 標準に準拠する必要があります
クラス名は StudlyCaps を使用して記述する必要があります
クラス内の定数は大文字とアンダースコア (_) のみで構成する必要があります
ComeCaseを使って書く必要があります
PSR-2 (コーディングスタイルガイド)
PSR-2はコーディングスタイルの標準です(原文:公式サイト、GitHub)。内容は若干増えていますが、PSR-1 に基づいており、インデント、コードの各行の長さ、改行、メソッドの可視性宣言、スペース、およびメソッド本体の中括弧の折り返しに関する関連規定が含まれています。
標準コンテンツ:
コードは PSR-1 に準拠する必要があります
コードはタブの代わりに 4 つのスペースをインデントに使用する必要があります
コードの行の長さに厳密な制限はありません。ソフト制限は 120 文字でなければなりません。 、コードの各行は 80 文字以下にすることをお勧めします
名前空間宣言の下に空行が必要であり、use 宣言の下にも空行が必要です
クラスの左中括弧は必ず必要です左中括弧は、クラス本体の下の独自の行に配置する必要があります。メソッドの左中括弧は、その宣言の下の独自の行に配置する必要があります。右中括弧は、次の行に配置する必要があります。
すべてのプロパティとメソッドには可視性宣言が必要であり、静的宣言は可視性宣言の後に続く必要があります。関数が呼び出されます。その後にスペースがあってはなりません
構造制御の左中括弧は同じ行に配置し、右中括弧は構造制御コード本体の次の行に配置する必要があります
制御構造の左中括弧の後や右中括弧の前にはスペースを入れてはなりません
PSR-3(ロガーインターフェイス)
PSR-3はインターフェースを介したアプリケーションログクラスの定義です(原文:公式サイト、GitHub)。内容は非常にシンプルで、公式のサンプルコードを引用するだけです。もちろん、特定のアプリケーションでは、このインターフェイスに従っている限り、対応する実装を間違いなくカスタマイズできます。
基本コンテンツ:
LoggerInterface は、8 レベルのログ (デバッグ、情報、通知、警告、エラー、クリティカル、アラート、緊急) を記録するための 8 つのインターフェイスを公開します。
9 番目のメソッドは log で、最初のパラメーターとしてログ レベルを受け入れます。ログ レベル定数を指定してこのメソッドを呼び出すと、指定したレベルのメソッドを直接呼び出した場合と同じ結果が得られる必要があります。この仕様で定義されておらず、実装に不明なログ レベルでこのメソッドを呼び出すと、PsrLogInvalidArgumentException がスローされる必要があります。現在のクラス ライブラリでカスタム ログ レベルがサポートされていることが確実でない限り、カスタム ログ レベルを使用することはお勧めできません。
PSR-4 (改善された自動読み込み)
PSR-4 は、自動読み込み仕様 (原文: 公式 Web サイト、GitHub) の改良版です。 PSR-0仕様の後継です。 PSR-0 を含む他の自動ロード仕様と互換性があります。
内容:
「クラス」という用語は、クラス、インターフェイス、特性、およびその他の同様の構造を含む一般的な用語です。
完全修飾クラス名は次の例のようになります:
完全に準拠したクラス名には最上位の名前空間 (ベンダー名) が必要です
完全に準拠したクラス名には複数のサブ名前空間を含めることができます
完全に準拠したクラス名には終端クラスが必要ですname
アンダースコア in 完全準拠のクラス名には特別な意味はありません
完全準拠のクラス名では、文字は大文字と小文字を自由に組み合わせて使用できます
すべてのクラス名は、大文字と小文字を区別して引用符で囲む必要があります
派生するとき完全に準拠したクラス名から ファイルをロードするとき:
完全に準拠したクラス名では、1 つまたは複数の連続したサブ名前空間 (最上位の名前空間の区切り文字を除く) で構成される名前空間プレフィックスは、少なくとも 1 つのベース ディレクトリに対応します
in " 「名前空間プレフィックス」の後の連続するサブ名前空間名は、「ベース ディレクトリ」の下のサブディレクトリに対応します。名前空間区切り文字はディレクトリ区切り文字を表します。サブディレクトリ名は、サブネームスペース名の大文字と小文字が一致する必要があります。終了クラス名は、.php で終わるファイルに対応します。ファイル名は終了クラス名の大文字と小文字が一致する必要があります
オートローダーの実装は、例外をスローしたり、あらゆるレベルのエラーを引き起こしたり、値を返したりしてはなりません
。