PHP仕様のPSR仕様

不言
不言オリジナル
2018-04-26 14:42:313752ブラウズ

この記事では、PHP 仕様の psr 仕様を紹介します。興味のある方はぜひご覧ください。 PHP 標準

ですが、Zend や Symfony2 などの有名な PHP プロジェクトから抽出された一連の標準であり、現在、ますます多くのコミュニティ プロジェクトがこの標準に参加し、準拠しています。



PSR-0オートローディング

PSR-2コードスタイル

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

  • PSR-4 指定方法クラス定義を自動的にロードするためのファイルパス

  • PSR-1 基本コード仕様

  • Ben この仕様は、コードの基本要素に関連する標準を策定して、高度な機能を保証します。共有 PHP

  • コード間の技術的な相互運用性。

ファイル

· PHPコードファイル

必須

<span style="color:#858080;背景: #F9FAFA;"><?php<span style="color:#7D8688;"> または <span style="color:#858080;background:#F9FAFA;"><?=</span></code > <strong> <span style="color:#7D8688;"></span> タグは </strong><span style="color:#7D8688;"></span><span style="color:#7D8688;"></span><span style="color:#7D8688;">· </span><code><span style="color:#858080;background:#F9FAFA;"><?php</span> <span style="color:#858080;background:#F9FAFA;"><?=</span> 标签开始;

· PHP代码文件 必须 <span style="color:#858080;background:#F9FAFA;">不带</span><span style="color:#858080;background:#F9FAFA;"> BOM </span><span style="color:#858080;background:#F9FAFA;">的</span><span style="color:#858080;background:#F9FAFA;"> UTF-8</span> 编码;

· PHP代码中 应该 只定义类、函数、常量等声明,或其他会产生 <span style="color:#FF0000;background:#F9FAFA;">副作用</span>PHP コード ファイル で終わる必要があります<span style="color:#858080;背景:#F9FAFA;"></span><span style="color:#858080;background:#F9FAFA;">BOM なし </p><span style="color:# 858080 ;background:#F9FAFA;">UTF-8<p style="background:#FFFFFF;"> エンコード;

·

PHP🎜🎜 コード内では 🎜🎜 🎜🎜🎜 を行う必要があります🎜🎜 クラスのみを定義する、関数、定数など。🎜🎜宣言🎜🎜、またはその他🎜 🎜Generate🎜🎜🎜<span style="color:#FF0000;background:#F9FAFA;">副作用🎜🎜 🎜🎜 操作 🎜🎜 (ファイル出力の生成と 🎜🎜 .ini 🎜🎜 設定ファイルの変更など)、両方 🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜 名前空間とクラス🎜 🎜🎜

· クラスの名前 must follow<span style="color:#858080;background:#F9FAFA;">StudlyCaps <code><span style="color:#858080;background:#F9FAFA;">StudlyCaps</span> 大写开头的驼峰命名规范;

· 每个类都独立为一个文件,且命名空间至少有一个层次:顶级的组织名称(vendorname

  • 类属性小写开头驼峰 $studlyCaps

  • 类方法:小写开头驼峰

常量

· 类中的常量所有字母都 必须 大写,单词间用下划线分隔;

  • 方法名称 必须 符合 <span style="color:#858080;background:#F9FAFA;">camelCase</span>

  • 大文字のキャメルケース

命名規則;

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

ベンダー名)

クラス属性: 小文字のキャメルケースで開始 $studlyCapsクラスメソッド: 小文字のキャメルケースで開始

定数

  • ·

    クラスの定数にはが必要です

  • 大文字、アンダースコアで単語を区切る

    メソッド名は、小文字で始まるキャメルケースの <span style="color:#858080;background:#F9FAFA;">camelCase<span style="color:#FF0000;"> スタイルの命名規則に準拠する必要があります

  • PSR-2コーディングスタイル仕様
  • インデント·

  • コード
  • 必須使用4 インデントには「

    Tab 🎜🎜キー」の代わりに🎜スペースを使用します。 🎜🎜🎜🎜🎜🎜line🎜🎜🎜🎜🎜🎜🎜 1 行あたりの文字数は 🎜80 🎜🎜🎜 以内にソフトに保つ必要があり、120 を超えてはなりませんが、ハード制限があってはなりません。 🎜🎜🎜🎜🎜🎜すべての🎜PHP🎜🎜ファイル🎜🎜は🎜🎜空白行🎜で終わる必要があります。 🎜🎜🎜🎜🎜🎜 各行には 🎜複数のステートメントを含めることはできません 🎜🎜🎜🎜🎜🎜🎜各 🎜namespace 🎜namespace 宣言ステートメントと 🎜use 🎜declaration ステートメント ブロックの後には、🎜空白行が必要です挿入されました🎜 。 🎜🎜🎜🎜🎜🎜🎜class🎜の左中括弧(🎜{🎜)は、関数宣言の後の単独の行🎜に記述しなければならず、右中括弧(🎜}🎜)も単独の行に記述する必要があります関数本体の後🎜 . 🎜🎜
  • メソッドの左中括弧({)は、関数宣言後の独自の行に記述する必要があり、右中括弧(})もその行に記述する必要があります。関数本体の後に独自のものを追加します。

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

Modifiers

  • クラスのプロパティとメソッド

    must アクセス修飾子を追加する( プライベート保護パブリック)、 abstractfinal はアクセス修飾子の前に宣言する必要がありますが、static はアクセス修飾子の後に宣言する必要があります。

spaces

comma

  • の後に存在する必要がありますスペース 1 つ

    、カンマの前にスペースがあってはなりません 制御構造の左括弧の開始と右括弧の前にスペースがあってはなりません。 キーワード · 制 制御構造体のキーワードにはスペース記号が必要であり、call メソッドまたは関数が呼び出されるときに

  • が使用可能であってはなりません。
  • すべての PHP キーワードはすべて小文字である必要があり、定数 true、false、および null もすべて小文字である必要があります。

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

<code><span style="color:#858080;background:#F9FAFA;">LoggerInterface</span>LoggerInterface インターフェイスは、 RFC 5424 8 つのレベルのログを記録するために使用される 8 つの外部メソッドを定義しますs : デバッグ情報通知警告エラー重大警報緊急

9番目のメソッド——log、その最初のパラメータは記録されたレベルです。このメソッドは、事前定義されたレベル定数をパラメータとして使用して呼び出すことができ、上記の 8 つのメソッドを直接呼び出すのと同じ効果が得られます。受信レベル定数パラメーターが事前定義されていない場合、 タイプ PsrLogInvalidArgumentException の例外をスローする必要があります。ユーザーは、不確実な状況下でこのメソッドを呼び出すためにサポートされていないレベル定数を使用しないでください。 /** * ログレベル定数定義*/class

LogLevel

{

constEMER GENCY=「緊急」

;

constALERT ='alert'; =

「重大」

; constエラー =

'エラー'

;

const警告 ='警告';

const 通知 =「お知らせ」;

constINFO ='情報' DEBUG

='デバッグ'; }

PSR-4 自動ロード仕様

次の例に似ています:

(

1. A完全に準拠したクラス名には、トップレベルの名前空間 (ベンダー名

) が必要です

2. 完全に準拠したクラス名には、複数のサブ名前空間を持つことができます 3。完全に準拠したクラス名には終了クラス名が必要です

4。完全に準拠したクラス名では特別な意味はありません

文字は大文字と小文字を任意に組み合わせて使用​​できます。完全に準拠したクラス名6. すべてのクラス名は大文字と小文字を区別して引用符で囲む必要があります

7. で終わるファイルに対応します。

。ファイル名は終了クラス名の大文字と小文字が一致する必要があります

いくつかの一般的なカスタマイズ仕様 制御層

1. SQL ステートメントはありません (SQL はモデル層にカプセル化され、その後メソッド Call) として使用されます2. SQL ステートメント、3 行を超える論理コード、空白行3. コンテキスト関数またはメソッドの間に空白行はありません

4. Bool は if を使用します。 (true === $name) form

5. 変数をリンクするには二重引用符を使用します

6. グローバル変数を使用する場合は、その意味と注釈を付ける必要があります。値の範囲

/**

* グローバル変数の概要

* Global STATUS_CODE

* 0 -SUCCESS * 2-ERROR

*/

STATUS_CODE

8. 関数ヘッダーは次のようにコメントされます。

/***************************************************
Function: //
関数の中国語名
Description: //
関数の機能、パフォーマンスなどの説明
Calls: // この関数によって呼び出される関数のリスト
Called By: // これを呼び出す関数のリストfunction
Table Accessed: // アクセス中のテーブル (この項目はデータベース操作を伴うプログラムのみ)
Table Updated: // 変更中のテーブル (これはデータベース操作を伴うプログラムのみ)
Input: // 入力パラメータの説明、各パラメーターの機能、値の説明、パラメーター間の関係が含まれます。
Output: // 出力パラメータの説明。
戻り値: using using through out using '' ' out の 's OUT through using ‐ back の ‐ ‐ ‐ ‐ ‐ //
*************** **/

9. コメント間の空白行

// コード 1 コメント
プログラム コード 1

/ / コード 2 コメント
プログラム コード 2

10. ファイルヘッダーコメント

/*************************************************** ******** Copyright(c)、1988-1999、Huawei Tech ;time> リジアン 17/10/11 1.0 初期化******************* ******** ************************/





11 switch ステートメントの case ジャンプにはコメントが必要です



12. マークされた変数の名前付け:

temp は tmp と省略できます ;
flag は flg と省略できます ;
statistic stat と省略できます ;
インクリメント は inc と省略できます ;
メッセージ は msg と省略できます ;

13. プレフィックス

を追加します / 削除開始 / 作成終了 / 破壊挿入
/最初に削除/ 最後の入手/ リリース増分
/減分put/get追加
/ロックを削除 / ロック解除オープン / 閉じる最小
/最大古い/新しい開始/停止
/前のソース / ターゲット ショー show / 非表示送信 /
受信 アップ/ down
14. ステータスコードにはハードコードの代わりに定数を使用してみてください。数字を理解するため

を以下の形式に変更する必要があります。
#defineTRUNK_IDLE 0
#define TRUNK_BUSY 1

if (トランク[インデックス ].tru​​nk_state == TRUNK_IDLE)
{
トランク[インデックス].tru​​nk_state = TRUNK_BUSY;
... //プログラムコード
}

15. クラスファイル大文字キャメルケースを使用した名前通常のファイルアンダースコアを使用した名前 16.

設定変数クラスメソッドを

として定義できる場合、name には アンダースコア

1. 变量自增自减写到表达式前面: --e >= $name
2. 程序顺序应该遵循:参数定义代码->判断逻辑代码->业务逻辑代码
r
3. 大的数据使用引用
4. 为逻辑代码里每个复杂度高/重复度高的代码添加注释
5. 尽量不为简短代码引入新的变量,减少变量污染

1が使用されます。 static、次のように定義してみてください静的、その速度はほぼ4倍に増加します。

2$row['id']の速度は$row[id] 7回。

3エコーより速い印刷 、そして echo の複数のパラメータを使用します (翻訳注: などの文字列連結の代わりに、ピリオドの代わりにカンマを使用することを指します。echo $str1,$str2) 4

forループを実行する前に、ループの最大値を計算しないでください。を使用するのが最善です。 代わりに foreach を使用してください。 5。これらの未使用の変数、特に大きな配列を登録解除して、メモリを解放します。

6__get__set __自動ロード

7require_once()は高価です。

8includeを避けるため、絶対パスを使用してみてください行くinclude_path でのファイルの検索速度が向上し、オペレーティング システムのパスの解析にかかる時間が短縮されます。

9、スクリプトの実行がいつ開始されるかを知りたい場合(注釈: サーバーはクライアントリクエストを受信します) 時間に応じて、time()よりも$_SERVER['REQUEST_TIME']を使用する方が良いでしょう。

10、関数は正規表現を置き換えて同じ関数を完成させます。

11str_replace関数比preg_replace 関数は高速で、strの効率が高い関数はstr_replace関数の4倍です。

12。文字列置換関数がパラメータとして配列または文字を受け入れることができ、パラメータの長さが長すぎない場合は、パラメータが長すぎないように追加の置換コードを記述することを検討できます。毎回渡されるのは、クエリおよび置換のパラメータとして配列を受け入れるコード行を記述するだけではなく、文字です。

13、選択分岐ステートメントを使用します(翻訳: つまりswitch case) 複数のを使用するよりも優れていますifelse ifステートメント。

14@を使用してエラーメッセージをブロックするのは非常に非効率的です。

15apachemod_deflateを開きますモジュールはWebページの閲覧速度を向上させることができます。

16。データベース接続は、使用が終了したら閉じる必要があります。長い接続は使用しないでください。

17、エラーメッセージは高価です。

18incrementグローバル変数を避ける

関連する推奨事項:

PSR-4について PHPの仕様について Lei Fengの手書き新聞について 春節の手書き新聞について春節について古代の

PHP 仕様 PSR-1 php 言語 php マニュアル php 開発者

以上がPHP仕様のPSR仕様の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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