ホームページ > バックエンド開発 > PHPチュートリアル > FIG-PHP PSR 仕様シリーズ 1 - 基本コーディング仕様

FIG-PHP PSR 仕様シリーズ 1 - 基本コーディング仕様

WBOY
リリース: 2016-06-23 13:29:42
オリジナル
1150 人が閲覧しました

1.FIG-PHPとPSRの紹介

FIG-PHPはPSRと呼ばれる一連のPHP開発仕様を策定しています。ここでFIGはFramework Interoperability Group(Framework Interoperability Group)の略で、PSRはPHP Standard Recommendationです。の略称。 FIG-PHP ワーキング グループは、プロジェクトの代表者が 2 つのプロジェクト間の共通点について話し合い、協力する方法を見つけたときに始まりました。主な視聴者は 2 つのプロジェクト チームですが、PHP コミュニティの他のメンバーも視聴しています。他の人がここの仕様を採用したい場合は歓迎しますが、これは作業グループの目標ではありません。チームの誰もアプリケーションの構築方法を教えてくれません。

2015.07 の時点で、合計 5 つの PSR 仕様文書がリリースされています:

PSR-0 自動ローディング (2014.10.21 に廃止、代替仕様は PSR-4)

PSR-1 基本コーディング仕様

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

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

PSR-4 自動読み込みの改善

PSR-7 HTTP メッセージインターフェイス


以下では、これらの仕様を複数のシリーズに分けて学習します。ドキュメントはシリーズ 1 です。

2. PSR-1: 基本コーディング仕様

この仕様では、将来コードを共有する際に、さまざまなコードが高度な技術的相互運用性を持つことができるように、いくつかの基本的なコーディング仕様について説明します。

この仕様における MUST、MUST NOT、SHOULD、SHOULD NOT、MAY などのキーワードの意味は、RFC 2119 に記載されています。

2.1 概要

ソース ファイルでは

ソース ファイル内の PHP コードのエンコード形式は、バイト オーダー マーク (BOM) のない UTF-8 のみを使用する必要があります。注: BOM の詳細については、参考資料 [BOM] を参照してください。

ソース ファイルは宣言 (クラス、関数、定数など) または一部の補助操作 (例: 情報の出力、.ini 設定の変更など) にのみ使用することが推奨されますが、使用すべきではありません (SHOULD NOT)。両方を同時に行います。

名前空間とクラスは、PSR 自動読み込み仕様: PSR-0 または PSR-4 に従う必要があります。 (翻訳者注: PSR-0 は廃止されたため、これは実際には PSR-4 仕様に従うことと同等です。)

クラス名は StudlyCaps を使用して記述する必要があります。

(訳者注: 参考文献 [StudlyCaps] を参照。StudlyCaps は大文字と小文字を任意に変更でき、一部の文字は無視できる書き方です。たとえば、メッセージが大文字と小文字で隠される場合があります。たとえば、「 ShoEboX」の大文字は「SEX」、小文字の祖母は「hobo」と綴ることができ、Web メール サービス プロバイダーの Hotmail は元々 HoTMaiL と書かれ、大文字は HTML と綴ることができます。)

クラス内の定数は次のもののみで構成されます。大文字とアンダースコア (_)。

メソッド名はcamelCase(キャメルケース)で記述する必要があります。

2.2 ファイル

2.2.1 PHP タグ

PHP コードでは長いタグ () または短い出力タグ () のみを使用する必要があります。その他のタグ。

2.2.2 文字エンコーディング

PHP コードのエンコーディング形式は、バイト オーダー マーク (BOM) のない UTF-8 のみを使用する必要があります。

2.2.3 補助関数

ソース ファイルは、宣言 (クラス、関数、定数など) のみ、または一部の補助操作 (例: 情報の出力、.ini 構成の変更など) のみに使用することをお勧めします。 .) ですが、これら 2 つのことを同時に行うことはお勧めできません。

フレーズの副作用とは、宣言 (クラス、関数、定数など) に直接関係しない実行ロジックを意味します。

(訳者注: [PSR-1-翻訳 1] では副作用が副作用と訳され、[PSR-1-翻訳 2] では従属効果と訳されています。どちらも意味不明です。訳文ここにはもっと良い補助効果があるはずです)。

(翻訳者注: 原文では「単にファイルを含めるだけで」が何を意味するのかわかりません。後で確認することにします)。

補助機能には、出力の生成、require または include の明示的な使用、外部サービスへの接続、ini 構成の変更、エラーまたは例外のトリガー、グローバル変数または静的変数の変更、ファイルの読み取りまたは変更などが含まれますが、これらに限定されません。

以下は、宣言と補助関数の両方を含むファイルの例です。つまり、避けるべき例です。

<?php// 副作用:修改了ini配置ini_set('error_reporting', E_ALL);// 副作用:载入了文件include "file.php";// 副作用:产生了输出echo "<html>\n";// 声明function foo(){    // 函数体}
ログイン後にコピー


以下は、宣言のみを含むファイルの例です。昇格する必要があります:

<?php// 声明function foo(){    // 函数体}// 条件式声明不算做是辅助作用if (! function_exists('bar')) {    function bar()    {        // 函数体    }}
ログイン後にコピー

2.3 スペース名前空間とクラス名

名前空間とクラスは自動読み込み仕様 PSR-0 または PSR-4 に従う必要があります。

これは、ソース ファイルが 1 つだけであることを意味します クラス (class) が存在します、名前空間内に少なくとも 1 つのレベル、つまり最上位の組織名 (ベンダー名) が必要です。

クラス名は StudlyCaps を使用して記述する必要があります。

PHP5.3 以降のコードは正式な名前空間を使用する必要があります

例:

<?php// PHP 5.3 及之后:namespace Vendor\Model;class Foo{}
ログイン後にコピー


PHP5.2.x之前的代码建议用伪命名空间Vendor_作为类名(class name)的前缀

<?php// PHP 5.2.x 及之前:class Vendor_Model_Foo{}
ログイン後にコピー


2.4 类的常量、属性和方法

术语类(class)指所有的类(class),接口(interface)和trait。

2.4.1 常量

类常量必须(MUST)只由大写字母和下划线(_)组成。 例子:

<?phpnamespace Vendor\Model;class Foo{    const VERSION = '1.0';    const DATE_APPROVED = '2012-06-01';}
ログイン後にコピー

2.4.2 属性

    类的属性命名可以遵循$StulyCaps,$camelCase或者$under_score中的某一种风格,本规范不做强制要求,但无论遵循哪种命名方式,都应当(SHOULD)在一定的范围内保持一致。这个范围可以是整个团队、整个包、整个类或整个方法。

2.4.3 方法

    方法名必须(MUST)使用camelCase风格来声明。

3. 参考资料

[BOM] 一个bom头引发的血案, 

[PHP-FIG] php-fig, http://www.php-fig.org/

[PSR-1-翻译1] PSR-1基本代码规范, https://github.com/hfcorriez/fig-standards/blob/zh_CN/%E6%8E%A5%E5%8F%97/PSR-1-basic-coding-standard.md

[PSR-1-翻译2] PHP PSR-1 基本代码规范(中文版), http://segmentfault.com/a/1190000002521577

[PSR-4] FIG-PHP PSR规范系列4-自动加载,

[RFC2119] Key words for use in RFCs to Indicate Requirement Levels, March 1997, http://www.ietf.org/rfc/rfc2119.txt

[RFC2119-阮一峰] RFC2119:表示要求的动词, http://www.ruanyifeng.com/blog/2007/03/rfc2119.html

[StudlyCaps] Studly caps, https://en.wikipedia.org/wiki/Studly_caps

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート