PHP の PSR 一連の仕様の内容は何ですか?
PSR
は、実際には PSR と呼ばれる一連の推奨標準です。仕様には、PSR-0 (オートローディング標準)、PSR-1 (基本コーディング標準)、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 はクラスの自動ロード仕様です (原文: 公式 Web サイト、GitHub)。 2014 年 10 月 21 日の時点で、この仕様は 非推奨 としてマークされ、PSR-4 に置き換えられています。その内容は非常に簡潔です。
コンテンツ:
- 完全修飾された名前空間とクラス名は、「<
Vendor Name
>(<Namespace
>)*< ;>”Class Name
各名前空間にはトップレベルの名前空間 (「ベンダー名」) が必要です- 各名前空間は任意の数のサブ名前空間を持つことができます
- 各名前空間ファイル システムからロードするときに、「オペレーティング システムのパス区切り文字」 (DIRECTORY_SEPARATOR) に変換する必要があります。
- 「クラス名」の各「_」文字は、DIRECTORY_SEPARATOR に変換する必要があります。 「_」記号は名前空間では明確な意味を持ちません
- ファイル
-
- をロードするには、命名標準に準拠した名前空間とクラス名は「.php」で終わる必要があります。 class 名前は大文字と小文字で構成できます。名前空間とクラス名は、マルチシステムの互換性を確保するために大文字と小文字が区別されます
Vendor Name
PSR-1 (基本コーディング標準)
PSR-1は基本的なコーディング標準です(原文:公式Webサイト、GitHub)。クラスファイルの命名方法、クラス名、クラスメソッド名など、内容は簡潔ですか?
コンテンツ:
- ソース ファイルでは、タグ
- のみを使用する必要があります。ソース ファイル内の PHP コードのエンコード形式は、BOM なしの UTF-8 のみを使用する必要があります
- ソース ファイルは、宣言 (クラス、関数、定数など) のみに使用することをお勧めします。 ) または副作用を引き起こすいくつかの操作 (例: 情報の出力、.ini 設定ファイルの変更など) を実行するためだけですが、これら 2 つのことを同時に実行しないでください
- 名前空間とクラスは PSR-0 標準に準拠する必要があります
- クラス名は StudlyCaps を使用して記述する必要があります
- クラス内の定数は次の構成のみである必要があります大文字とアンダースコア (_)
- メソッド名は CamCase を使用して記述する必要があります
PSR-2 (コーディング スタイル ガイド)
PSR-2 はコーディングスタイル標準です (原文: 公式ウェブサイト、GitHub)。内容は若干増えていますが、PSR-1 に基づいており、インデント、コードの各行の長さ、改行、メソッドの可視性宣言、スペース、およびメソッド本体の中括弧の折り返しに関する関連規定が含まれています。
標準コンテンツ:
- コードは PSR-1 に準拠する必要があります
- コードはインデントに 4 つのスペースを使用する必要があります。タブ
- を使用する場合、コード行の長さにハード制限はありません。ソフト制限は 120 文字でなければならず、コードの各行は 80 文字以下であることが推奨されます。以下
- 名前空間宣言の下には空行が必要であり、use 宣言の下にも空行が必要です
- 冒頭クラスの中括弧は宣言の下の独自の行に配置する必要があり、右中括弧はクラス本体の下の独自の行に配置する必要があります
- の左中括弧メソッドは宣言の下の独自の行に配置する必要があり、中括弧はメソッド本体の次の行に配置する必要があります
。 - すべてのプロパティとメソッドには可視性宣言が必要です。抽象宣言と最終宣言は可視性宣言の前になければなりません。可視性宣言の後にはスペースが必要です。構造制御キーワード。メソッド呼び出しと関数呼び出しの後にはスペースがあってはなりません。
- 構造制御の左中括弧は同じ行に配置し、右中括弧は同じ行に配置する必要があります。構造制御コード本体の次の行
- 制御構造の左中括弧の後にはスペースがあってはなりません。 右大括弧
の前にはスペースがあってはなりません。
- PSR-3 (Logger Interface) PSR-3 は、インターフェースを介したアプリケーションログクラスの定義です (原文: 公式 Web サイト、GitHub)。内容は非常にシンプルで、公式のサンプルコードを引用するだけです。もちろん、特定のアプリケーションでは、このインターフェイスに従っている限り、対応する実装を間違いなくカスタマイズできます。
基本コンテンツ:
LoggerInterface は、8 つのレベル (デバッグ、情報、通知、警告、エラー、クリティカル、アラート、緊急) のログを記録するための 8 つのインターフェイスを公開します。
9 番目のメソッドは log で、最初のパラメータとしてログ レベルを受け入れます。ログ レベル定数を指定してこのメソッドを呼び出すと、指定したレベルのメソッドを直接呼び出した場合と同じ結果が得られる必要があります。この仕様で定義されておらず、実装に不明なログ レベルでこのメソッドを呼び出すと、PsrLogInvalidArgumentException がスローされる必要があります。現在のクラス ライブラリでカスタム ログ レベルがサポートされていることが確実でない限り、カスタム ログ レベルを使用することはお勧めできません。
PSR-4 (改善された自動読み込み)
PSR-4 は自動読み込み仕様の改良版です (原文: 公式ウェブサイト、 GitHub)。 PSR-0仕様の後継です。 PSR-0 を含む他の自動ロード仕様と互換性があります。
コンテンツ:
- 「クラス」という用語には、クラス、インターフェイス、特性、およびその他の同様の構成要素が含まれます。
- name は、次の例のようになります。()*
完全修飾クラス名には、トップレベルの名前空間 (ベンダー名)
-
完全修飾クラス名には複数のサブ名前空間を含めることができます
完全修飾クラス名には終了クラス名が必要です
完全修飾クラス名には特別な意味はありません
完全修飾クラス名では、文字は大文字と小文字を任意に組み合わせて使用できます
すべてのクラス名
- は大文字と小文字を区別して引用符で囲む必要があります 完全修飾クラス名からファイルをロードする場合:
完全修飾クラス名では、少なくとも 1 つの基本ディレクトリ
- 連続するサブ名前空間名は、「ベース ディレクトリ」の下のサブディレクトリに対応します。名前空間区切り文字はディレクトリ区切り文字を表します。サブディレクトリ名は、サブネームスペース名の大文字と小文字が一致する必要があります。
- 終了クラス名は、.php で終わるファイルに対応します。ファイル名は終了クラス名の大文字と小文字が一致する必要があります
- オートローダーの実装では、例外をスローしたり、あらゆるレベルのエラーを発生させたりしてはなりません。戻り値
注: 具体的な仕様内容は、他の中国語翻訳版を参照して編集されています。