PSR(PHPコーディング規約)の概要まとめ。策定の進む勧告の最新をウォッチしていく忘備録
- 公開:
- 更新:
- カテゴリ: PHP PSR
- タグ: PHP,PSR
- アジェンダ
PSRとは
PSR(PHP Standards Recommendations = PHP標準勧告)とは、PHP-FIG(PHP Framework Interop Group = PHPフレームワーク相互運用性グループ)が策定しているPHPコーディング規約です。
PHP-FIGは、多数のフレームワーク開発者によって組織されていますが、それ以外にも、コア委員会とか投票メンバーとか、色々な人が関わっています。
2018年3月時点、結構豪華なメンバーが揃っています。全部は書ききれないですが、Symfony・ReactPHP・CakePHP・Composer・Drupal・PEAR・Phalcon・Slim・Zend Frameworkの開発者とか。Laravelの開発者であるTaylor Otwell氏は元メンバーになっていますね。
PSR一覧
承認済みステータスのPSR一覧(2019年8月時点)
- PSR-1 Basic Coding Standard(基本的なコーディング標準)
- PSR-2 Coding Style Guide(コーディングスタイルガイド)
- PSR-3 Logger Interface(ロガーインタフェース)
- PSR-4 Autoloader(オートローダー)
- PSR-6 Caching Interface(キャッシングインターフェイス)
- PSR-7 HTTP Message Interface(HTTPメッセージインターフェイス)
- PSR-11 Container Interface(コンテナインタフェース)
- PSR-12 Extended Coding Style(拡張コーディングスタイル)
- PSR-13 Hypermedia Links(ハイパーメディアリンク)
- PSR-15 HTTP Handlers(HTTPハンドラ)
- PSR-16 Simple Cache(シンプル・キャッシュ)
- PSR-17 HTTP Factories(HTTPファクトリ)
- PSR-18 HTTP Client(HTTPクライアント)
※PSR-0は廃止予定とされ、PSR-4が代替となっています。
ステータスと承認フロー
公式ページのPSR一覧を見ると、ステータス別にインデックスされています。
そのステータスと、正式承認までのフローを理解しておくと一覧も読みやすいです。
承認フロー
- Pre-Draft 提案(必要・適切かどうかを議論する)
- Draft 草案(審議・検討)
- Review 審査(実用性評価)
- Accepted 承認
- Deprecated 廃止予定
- Abandoned 放棄
承認ステータス
各ステータスの詳細は以下の通りです。
Pre-Draft(提案)
関わるみんな(ワーキンググループ)で規約を策定し、それを議論して提案をまとめ、エントランス投票に合格するとDraft段階へ移行する。ここでの投票は、「その提案自体がPSRとして必要か」が問われる。
- エントランス投票
- 適切な投票権を持つコア委員による投票。投票率50%以上に対して2/3の賛成で合格
Draft(草案)
FIGコア委員会による審議・検討。この間も、ワーキンググループのメンバーは内容を変更出来て、代替の提案が出来る。
提案そのものの準備と文書が完全である事が確認されると準備投票が行われ、合格するとReview段階へ移行する。
- 準備投票
- PSRの作業部会のメンバーによる投票。投票率50%以上に対して2/3の賛成で合格
Review(審査)
提案の実用性を評価する。最低4週間のトライアルが実装行われ、それが実証されるまで続く。
この段階で、提案にどうしても大きな変更の必要がある時はDraftフェースに戻す必要があるが、小さな変更はここでも起こる場合がある。
受諾投票に合格すると、正式に承認(Accepted)されたPSRになる。
- 受諾投票
- 適切な投票権を持つコア委員による投票。投票率50%以上に対して2/3の賛成で合格
Accepted(承認)
正式承認。ここのステータスのものが、いわゆる正式にPSRとして勧告されているものになる。
Deprecated(廃止予定)
承認はされたが、もういらないよね。とか、新しいバージョンのものに替えられた場合はここに入る
Abandoned(放棄)
積極的に取り組まれていないPSRは放棄としてマークされる。
キーワード
このドキュメントのキーワードとして、RFC2119で説明されているように以下解釈されます。
- MUST(しなければならない)
- MUST NOT(してはならない)
- REQUIRED(要求されている)
- SHALL(することになる)
- SHALL NOT(することはない)
- SHOULD(する必要がある)
- SHOULD NOT(しないほうがよい)
- RECOMMENDED(推奨される)
- MAY(してもよい)
- OPTIONAL(選択できる)