ホームページ  >  記事  >  バックエンド開発  >  [PHP] PSR 概要仕様

[PHP] PSR 概要仕様

WBOY
WBOYオリジナル
2016-07-23 08:54:451150ブラウズ

PSR は PHP 開発に関する一連の仕様であり、私は表面的に学びましたが、記憶とフォローを容易にするために、必要なキーワードを抽出して作成しました。 a 単に必要な規範記録。 (ただのレンガ運び屋です...)
https://github.com/PizzaLiu/PHP-FIG
http://segmentfault.com/a/1190000002521577

公式リリースファイルのバージョン

PSR-0(非推奨)

PSR-1 基本コード仕様

PSR-2 コードスタイル仕様

PSR-2補足文書

PSR-3ログインターフェース仕様

PSR-4が自動的にロードされました

PSR-5 と PSR-6 の投票はまだ終わっていません

しなければならない PSR-1 基本コード仕様

php コード ファイルは

PHP コード ファイルは BOM なしで UTF-8 でエンコードする必要があります;

名前空間とクラスは、PSR の自動ロード仕様 (PSR-0 または PSR-4 のいずれか) に準拠する必要があります。

クラスの命名は、大文字で始まる StudlyCaps のキャメルケース命名規則に従う必要があります。

クラス内の定数の文字はすべて大文字にする必要があり、単語はアンダースコアで区切られます。

メソッド名は、小文字で始まるキャメルケースの命名規則に準拠する必要があります。

PHP コードでは

長いタグまたは

短い出力タグを使用する必要があります。他のカスタム タグは使用できません。 = ?>名前空間とクラスの命名は PSR-0 に準拠する必要があります。

PHP 5.3 以降のバージョンのコードでは、正式な名前空間を使用する必要があります。

各クラスは独立したファイルであり、名前空間には少なくとも 1 つのレベルがあります: 最上位の組織名 (ベンダー名)

PSR-2 コーディング スタイル ガイド

コードはPSR-1のコーディング仕様に従う必要があります。

コードはタブキーの代わりに4つのスペースを使用してインデントする必要があります。

注: インデントにタブ キーの代わりにスペースを使用する利点は、コードの相違点の比較、パッチ適用、コードのレビュー、およびコメントの際の混乱を避けることです。 また、位置合わせを容易にするために、インデントにスペースを使用します。

各名前空間宣言ステートメントと use 宣言ブロックの後に空行を挿入する必要があります。

クラスの開き中括弧 ({) は関数宣言の後の独自の行に記述する必要があり、閉じ中括弧 (}) も関数本体の後の独自の行に記述する必要があります。

メソッドの開き中括弧 ({) は関数宣言の後の独自の行に記述する必要があり、閉じ中括弧 (}) も関数本体の後の独自の行に記述する必要があります。

クラスのプロパティとメソッドはアクセス修飾子 (private、protected、public) を追加する必要があり、abstract と Final はアクセス修飾子の前に宣言する必要があり、static はアクセス修飾子の後に宣言する必要があります。

制御構造のキーワードの後に​​はスペースが必要ですが、メソッドまたは関数を呼び出すときはスペースがあってはなりません。

制御構造体の左中括弧 ({) は宣言と同じ行に記述し、右中括弧 (}) は本文の後の独自の行に記述する必要があります。

コントロール構造の左括弧の開始と右括弧の前にスペースがあってはなりません。

すべての PHP ファイルは、行終端文字として Unix LF (改行) を使用する必要があります。

すべての PHP ファイルは空行で終わる必要があります。

純粋な PHP コード ファイルでは、最後の ?> 終了タグを省略する必要があります。

1 行に複数のステートメントを含めることはできません。

空白行以外の行の後には余分なスペースがあってはなりません。

すべての PHP キーワードは小文字である必要があります。

定数 true、false、null もすべて小文字である必要があります。

PSR-3ログインターフェース仕様 PSR-4自動装填仕様

完全なクラス名は次の構造でなければなりません:

<名前空間>(<サブ名前空間>)*<クラス名>
    完全なクラス名にはトップレベルの名前空間が必要であり、「ベンダー」と呼ばれます。 namespace";
  1. 完全なクラス名には 1 つ以上のサブ名前空間を含めることができます;
  2. 完全なクラス名には最終クラス名が必要です;
  3. 完全なクラス名の一部のドロップには特別な意味はありません;
  4. 完全なクラス名は大文字と小文字で構成できます。
  5. すべてのクラス名は大文字と小文字を区別する必要があります。
コードをコピーします
完全なクラス名に基づいて対応するファイルをロードする場合

完全なクラス名で、最初の名前空間区切り文字、前にある1つ以上の連続する名前空間とサブ名を削除します スペース「名前空間プレフィックス」は、少なくとも 1 つの「ファイル ベース ディレクトリ」に対応している必要があります。 。
  1. の末尾のクラス名は、.php 接尾辞が付いた対応するファイルと同じ名前でなければなりません。
  2. オートローダーの実装は例外をスローしてはならず、どのレベルでもエラー メッセージをトリガーしてはならず、戻り値を持ってはいけません。
  3. コードをコピー
提案 (詳細については、詳細なドキュメントを参照してください) PSR-1

PHP コードでは、クラス、関数、定数などの宣言、または副次的な効果を生み出すその他の操作 (ファイル出力の生成や .ini 設定ファイルの変更など) のみを定義する必要があります。選択できるのは、次のいずれか 1 つだけです。 2つ

クラスの属性命名は、大文字で始まるキャメルケース ($StudlyCaps)、小文字で始まるキャメルケース ($camelCase)、または下線区切り形式 ($under_score) に従うことができます。この仕様は必須ではありません。ただし、どの名前に従う場合でも、メソッドは一定の範囲内で一貫している必要があります。

PSR-2

1 行あたりの文字数は、ソフト的に 80 文字以内に抑える必要があります。理論的には 120 文字を超えてはなりませんが、厳密な制限はありません。

空白行によりコードが読みやすくなり、コードをチャンクに分割するのに役立ちます。

コード例 PSR-2
  1. namespace VendorPackage;
  2. FooInterfaceを使用;
  3. BarClassをBarとして使用;
  4. OtherVendorOtherPackageBazClassを使用;
  5. class FooがBarを拡張し、FooInterfaceを実装します
  6. {
  7. public function sampleFunction($a, $b = null)
  8. {
  9. if ($a === $b) {
  10. bar();
  11. } elseif ($a > $b) {
  12. $foo->bar($arg1);
  13. } else {
  14. BazClass::bar($arg2, $arg3);
  15. }
  16. }
  17. 最終的なパブリック静的関数 bar()
  18. {
  19. // メソッド本体
  20. }
  21. }
コードをコピー
PHP、PSR


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。