ホームページ >バックエンド開発 >PHPチュートリアル >PHP コーディング スタイル ガイド (PHP-FIG PSR-2)

PHP コーディング スタイル ガイド (PHP-FIG PSR-2)

WBOY
WBOYオリジナル
2016-08-08 09:28:281533ブラウズ

このガイドは、PSR-1 基本コーディング標準の拡張版です。

このガイドでは、さまざまな作成者のコーディング スタイルの違いによって生じる認知の障壁を軽減することを目的として、一般的な PHP コード形式のルールと提案をリストします。

ここでのスタイル規約は、いくつかのメンバー プロジェクトから派生したものです。ガイドラインの作成者は、これらのガイダンス規定を前進させるために複数のプロジェクトに協力しました。 指導の鍵となるのはルールそのものではなく、共有することです。

記事に関わるキーワードは「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」の「Recommend」、「MAY」、「OPTIONAL」を記載しています

概要

  1. コードは、「基本コーディング標準」PSR [PSR-1] に従う必要があります。
  2. コードのインデントにはタブではなく 4 つのスペースを使用する必要があります。
  3. 行の長さに厳密な制限はありません。ソフト制限は 120 文字でなければならず、80 文字以下でなければなりません。
  4. 名前空間宣言の後には空行が必要で、use宣言の後にも空行が必要です。
  5. クラスの{はクラス名の次の行に、}は本文の次の行になければなりません。
  6. メソッドの { はメソッド シグネチャの次の行に、} は本体の次の行になければなりません。
  7. すべてのプロパティとメソッドには可視性が設定されている必要があり、可視性の前に抽象と最終を宣言する必要があり、可視性の後に静的を宣言する必要があります。
  8. 構造制御キーワードの後に​​はスペースが必要です。メソッドと関数にはスペースを含めることはできません。
  9. 構造コントロールの { は同じ行になければならず、 } は本文の次の行になければなりません。
  10. Structure-controlled の後にはスペースが必要です (そして、 Structure-controlled の前にはスペースがあってはなりません)。

以下は、ルールを一般的に理解するのに役立つ包括的な例です。

<code><span><?php</span><span>namespace</span><span>Vendor</span>\<span>Package</span>;

<span>use</span><span>FooInterface</span>;
<span>use</span><span>BarClass</span><span>as</span><span>Bar</span>;
<span>use</span><span>OtherVendor</span>\<span>OtherPackage</span>\<span>BazClass</span>;

<span><span>class</span><span>Foo</span><span>extends</span><span>Bar</span><span>implements</span><span>FooInterface</span>
{</span><span>public</span><span><span>function</span><span>sampleFunction</span><span>(<span>$a</span>, <span>$b</span> = null)</span>
    {</span><span>if</span> (<span>$a</span> === <span>$b</span>) {
            bar();
        } <span>elseif</span> (<span>$a</span> > <span>$b</span>) {
            <span>$foo</span>->bar(<span>$arg1</span>);
        } <span>else</span> {
            BazClass::bar(<span>$arg2</span>, <span>$arg3</span>);
        }
    }

    <span>final</span><span>public</span><span>static</span><span><span>function</span><span>bar</span><span>()</span>
    {</span><span>// 方法 body</span>
    }
}</span></code>

基本ルール

基本コーディング標準

コードは PSR-1 の条件に従う必要があります。

ファイル

  1. すべてのファイルは Unix LF (改行) 改行を使用する必要があります。
  2. すべての PHP ファイルは単一の空白行で終わる必要があります。
  3. PHP のみを含むコードは、php 終了タグ > を無視する必要があります。

Line

  1. ラインの長さには厳密な制限があってはなりません。
  2. 長さのソフト制限は 120 文字である必要があります。自動コード スタイル チェックでは 120 文字を警告として設定する必要があり、エラーとして設定してはなりません。
  3. 行は 80 文字を超えてはならず、この長さを超える行は 80 文字以内の複数の行に分割する必要があります。
  4. 空でない行は末尾にスペースを入れずに終了する必要があります。
  5. 読みやすさを高めるために、コードの関連性を示すために空白行を追加できます。
  6. 各行に含まれるステートメントは 1 つだけです。

インデント

  1. コードではインデントに 4 つのスペースを使用する必要があり、タブをインデントとして使用してはなりません。

注: 差分、パッチ、履歴、注釈に関する問題を回避するには、タブではなくスペースのみを使用してください。スペースを使用すると位置合わせにも役立ちます。

キーワード (予約語) および true/false/null

  1. PHP の予約語は小文字である必要があります。
  2. PHP 定数 true、false および null は小文字である必要があります。

名前空間および Use 宣言は宣言される必要があります。空白行の後。

    すべての use ステートメントは、namespace ステートメントの後に来る必要があります。
  1. 各ステートメントは個別に使用する必要があります。
  2. 使用宣言領域の後には空行が必要です。
  3. 例:
  4. <code><span><?php</span><span>namespace</span><span>Vendor</span>\<span>Package</span>;
    
    <span>use</span><span>FooClass</span>;
    <span>use</span><span>BarClass</span><span>as</span><span>Bar</span>;
    <span>use</span><span>OtherVendor</span>\<span>OtherPackage</span>\<span>BazClass</span>;
    
    <span>// ... additional PHP code ...</span></code>
クラス、属性、メソッド

ここでの「クラス」には、クラス、インターフェイス、トレイトが含まれます。

継承と実装

extends およびimplements キーワードは、クラス名と同じ行で宣言する必要があります。

class { は 1 行を占める必要があります。 } は本文の次の行になければなりません。

<code><span><?php</span><span>namespace</span><span>Vendor</span>\<span>Package</span>;

<span>use</span><span>FooClass</span>;
<span>use</span><span>BarClass</span><span>as</span><span>Bar</span>;
<span>use</span><span>OtherVendor</span>\<span>OtherPackage</span>\<span>BazClass</span>;

<span><span>class</span><span>ClassName</span><span>extends</span><span>ParentClass</span><span>implements</span> \<span>ArrayAccess</span>, \<span>Countable</span>
{</span><span>// constants, properties, methods</span>
}</code>

実装 複数のインターフェイスがある場合、インターフェイスのリストは複数の行に分割でき、各サブラインにはインデントが含まれます。これを行う場合、最初のインターフェイスは実装後の行に存在する必要があり、行ごとに存在できるインターフェイスは 1 つだけです。

<code><span><?php</span><span>namespace</span><span>Vendor</span>\<span>Package</span>;

<span>use</span><span>FooClass</span>;
<span>use</span><span>BarClass</span><span>as</span><span>Bar</span>;
<span>use</span><span>OtherVendor</span>\<span>OtherPackage</span>\<span>BazClass</span>;

<span><span>class</span><span>ClassName</span><span>extends</span><span>ParentClass</span><span>implements</span>
    \<span>ArrayAccess</span>,
    \<span>Countable</span>,
    \<span>Serializable</span>
{</span><span>// constants, properties, methods</span>
}</code>

プロパティ

すべてのプロパティは可視性を宣言する必要があります。

Var キーワードをプロパティの宣言に使用してはなりません。

1 行に宣言する必要がある属性は 1 つだけです。

保護された属性とプライベート属性には接頭辞のアンダースコアを付けないでください。

例:

<code><span><?php</span><span>namespace</span><span>Vendor</span>\<span>Package</span>;

<span><span>class</span><span>ClassName</span>
{</span><span>public</span><span>$foo</span> = <span>null</span>;
}</code>

メソッド

すべてのメソッドは可視性を宣言する必要があります。

保護されたメソッドとプライベート メソッドには接頭辞のアンダースコアを付けないでください。

メソッドを宣言するときは、メソッド名の後にスペースを入れてはいけません。 { は同じ行になければならず、} は本文の次の行になければなりません。 (() の後にスペースがあってはならず、その前にもスペースがあってはなりません)。

メソッド宣言の例は次のとおりです。括弧、カンマ、スペース、中括弧の位置に注意してください:

<code><span><?php</span><span>namespace</span><span>Vendor</span>\<span>Package</span>;

<span><span>class</span><span>ClassName</span>
{</span><span>public</span><span><span>function</span><span>fooBarBaz</span><span>(<span>$arg1</span>, &<span>$arg2</span>, <span>$arg3</span> = [])</span>
    {</span><span>// method body</span>
    }
}</code>

メソッドパラメータ

メソッドの仮パラメータリストでは、それぞれの前にスペースがあってはなりません。コンマ。デフォルト値を持つパラメータはパラメータリストの最後になければなりません。

<code><span><?php</span><span>namespace</span><span>Vendor</span>\<span>Package</span>;

<span><span>class</span><span>ClassName</span>
{</span><span>public</span><span><span>function</span><span>foo</span><span>(<span>$arg1</span>, &<span>$arg2</span>, <span>$arg3</span> = [])</span>
    {</span><span>// method body</span>
    }
}</code>

パラメータリストは複数の行に分割でき、各下位行にはインデントが必要です。これを行う場合、最初のパラメータは単独の行に存在する必要があり、1 行にパラメータは 1 つだけ指定できます。

パラメータリストが複数行に分かれている場合、右括弧 ) と左中括弧 { は同じ行にあり、その前にスペースが必要です。

<code><span><?php</span><span>namespace</span><span>Vendor</span>\<span>Package</span>;

<span><span>class</span><span>ClassName</span>
{</span><span>public</span><span><span>function</span><span>aVeryLongMethodName</span><span>(
        ClassTypeHint <span>$arg1</span>,
        &<span>$arg2</span>,
        array <span>$arg3</span> = []
    )</span> {</span><span>// method body</span>
    }
}</code>

abstract、final、static

abstract 宣言と Final 宣言は、可視化する前に宣言する必要があります。

静的宣言は可視性の後に来る必要があります。

<code><span><?php</span><span>namespace</span><span>Vendor</span>\<span>Package</span>;

<span>abstract</span><span><span>class</span><span>ClassName</span>
{</span><span>protected</span><span>static</span><span>$foo</span>;

    <span>abstract</span><span>protected</span><span><span>function</span><span>zim</span><span>()</span>;</span><span>final</span><span>public</span><span>static</span><span><span>function</span><span>bar</span><span>()</span>
    {</span><span>// method body</span>
    }
}</code>

メソッドと関数の呼び出し

写方法或函数调用时,方法/函数名 和 左括号( 之间,必须没有空格, 右括号 ) 之前必须没有空格。在参数列表中,逗号间必须没有逗号,每个逗号后必须有一个空格。

<code><span><?php</span><span>$foo</span>->bar(
    <span>$longArgument</span>,
    <span>$longerArgument</span>,
    <span>$muchLongerArgument</span>
);</span></code>

控制结构

控制结构通常遵循以下风格:

  1. 控制结构关键词后必须有一个空格。
  2. 左括号后必须没有空格。
  3. 右括号前必须没有空格。
  4. 又括号和左花括号之间必须有一个空格。
  5. body必须有一层缩进。
  6. 右花括号必须在body下一行。
  7. 每个控制结构的body必须用花括号括起来。 即保证外观统一,又减少了添加新行时引入的错误。

if, elseif, else

if 结构如下所示。注意括号、空格、花括号的位置;同时留意 else 和 elseif 与前一部分的 } 在同一行。

<code><span><?php</span><span>if</span> (<span>$expr1</span>) {
    <span>// if body</span>
} <span>elseif</span> (<span>$expr2</span>) {
    <span>// elseif body</span>
} <span>else</span> {
    <span>// else body;</span>
}</code>

elseif关键字不应该被 else if 代替。

switch, case

Switch结构如下所示。注意括号、空格和花括号的位置。 case 语句相对于switch必须有一个缩进, break关键字 或者其他终结性的关键字必须和case body在同一缩进层级。在非空的case body,如果没有终结性语句,必须加上注释 // no break

<code><span><?php</span><span>switch</span> (<span>$expr</span>) {
    <span>case</span><span>0</span>:
        <span>echo</span><span>'First case, with a break'</span>;
        <span>break</span>;
    <span>case</span><span>1</span>:
        <span>echo</span><span>'Second case, which falls through'</span>;
        <span>// no break</span><span>case</span><span>2</span>:
    <span>case</span><span>3</span>:
    <span>case</span><span>4</span>:
        <span>echo</span><span>'Third case, return instead of break'</span>;
        <span>return</span>;
    <span>default</span>:
        <span>echo</span><span>'Default case'</span>;
        <span>break</span>;
}</code>

while, do while

while结构如下所示。 注意括号、空格和花括号的位置。

<code><span><?php</span><span>while</span> (<span>$expr</span>) {
    <span>// structure body</span>
}</code>

do-while接口如下所示。 注意括号、空格和花括号的位置。

<code><span><?php</span><span>do</span> {
    <span>// structure body;</span>
} <span>while</span> (<span>$expr</span>);</code>

for

for 结构如下所示。 注意括号、空格和花括号的位置。

<code><span><?php</span><span>for</span> (<span>$i</span> = <span>0</span>; <span>$i</span> < <span>10</span>; <span>$i</span>++) {
    <span>// for body</span>
}</code>

foreach

foreach 结构如下所示。 注意括号、空格和花括号的位置。

<code><span><?php</span><span>foreach</span> (<span>$iterable</span><span>as</span><span>$key</span> => <span>$value</span>) {
    <span>// foreach body</span>
}</span></code>

try, catch

try-catch区块如下所示。 注意括号、空格和花括号的位置。

<code><span><?php</span><span>try</span> {
    <span>// try body</span>
} <span>catch</span> (FirstExceptionType <span>$e</span>) {
    <span>// catch body</span>
} <span>catch</span> (OtherExceptionType <span>$e</span>) {
    <span>// catch body</span>
}</code>

Closure 闭包

声明闭包必须在function关键字后留一个空格,在use关键字前后各留一个空格。

左花括号必须在同一行, 右花括号必须在body的下一行。

参数或变量列表的左括号后 和 右括号前必须没有空格。

参数和变量列表的逗号前必须没有空格,每个逗号后必须有一个空格。

有默认值的参数必须排在最后。

闭包的声明如下所示。 注意括号,逗号,空格和花括号的位置:

<code><span><?php</span><span>$closureWithArgs</span> = <span><span>function</span><span>(<span>$arg1</span>, <span>$arg2</span>)</span> {</span><span>// body</span>
};

<span>$closureWithArgsAndVars</span> = <span><span>function</span><span>(<span>$arg1</span>, <span>$arg2</span>)</span><span>use</span><span>(<span>$var1</span>, <span>$var2</span>)</span> {</span><span>// body</span>
};</code>

参数列表和变量列表可以拆分到多行,每个子行有一层缩进。 这么做的时候,第一个列表成员必须独占一行,每行只能有一个列表成员。

参数或变量列表拆分为多行时,到了列表的末尾, 右括号 和 左花括号必须放在同一行,中间有一个空格。

例子:

<code><span><?php</span><span>$longArgs_noVars</span> = <span><span>function</span><span>(
    <span>$longArgument</span>,
    <span>$longerArgument</span>,
    <span>$muchLongerArgument</span>
)</span> {</span><span>// body</span>
};

<span>$noArgs_longVars</span> = <span><span>function</span><span>()</span><span>use</span><span>(
    <span>$longVar1</span>,
    <span>$longerVar2</span>,
    <span>$muchLongerVar3</span>
)</span> {</span><span>// body</span>
};

<span>$longArgs_longVars</span> = <span><span>function</span><span>(
    <span>$longArgument</span>,
    <span>$longerArgument</span>,
    <span>$muchLongerArgument</span>
)</span><span>use</span><span>(
    <span>$longVar1</span>,
    <span>$longerVar2</span>,
    <span>$muchLongerVar3</span>
)</span> {</span><span>// body</span>
};

<span>$longArgs_shortVars</span> = <span><span>function</span><span>(
    <span>$longArgument</span>,
    <span>$longerArgument</span>,
    <span>$muchLongerArgument</span>
)</span><span>use</span><span>(<span>$var1</span>)</span> {</span><span>// body</span>
};

<span>$shortArgs_longVars</span> = <span><span>function</span><span>(<span>$arg</span>)</span><span>use</span><span>(
    <span>$longVar1</span>,
    <span>$longerVar2</span>,
    <span>$muchLongerVar3</span>
)</span> {</span><span>// body</span>
};</code>

注意:当闭包被直接作为函数或方法调用的参数时,以上规则同样适用。

<code><span><?php</span><span>$foo</span>->bar(
    <span>$arg1</span>,
    <span><span>function</span><span>(<span>$arg2</span>)</span><span>use</span><span>(<span>$var1</span>)</span> {</span><span>// body</span>
    },
    <span>$arg3</span>
);</span></code>

结语

本指南刻意忽略了许多风格和实践。包括但不限于:

  • 声明全局变量和全局常量。
  • 声明函数。
  • 操作符和赋值。
  • 行间对齐。
  • 注释和文档区。
  • 类名前后缀。
  • 最佳实践。

Future recommendations MAY revise and extend this guide to address those or other elements of style and practice.

附录A 调查

In writing this style guide, the group took a survey of member projects to determine common practices. The survey is retained herein for posterity.

调查数据

<code>url,<span>http</span>:<span>//</span>www.horde.org<span>/apps/horde/docs/CODING_STANDARDS,http:/</span><span>/pear.php.net/manual/en/standards.php,http:/</span><span>/solarphp.com/manual/appendix-standards.style,http:/</span><span>/framework.zend.com/manual/en/coding-standard.html,http:/</span><span>/symfony.com/doc/2.0/contributing/code/standards.html,http:/</span><span>/www.ppi.io/docs/coding-standards.html,https:/</span><span>/github.com/ezsystems/ezp-next/wiki/codingstandards,http:/</span><span>/book.cakephp.org/2.0/en/contributing/cakephp-coding-conventions.html,https:/</span><span>/github.com/UnionOfRAD/lithium/wiki/Spec%3A-Coding,http:/</span><span>/drupal.org/coding-standards,http:/</span><span>/code.google.com/p/sabredav/</span>,<span>http</span>:<span>//</span>area51.phpbb.com<span>/docs/31x/coding-guidelines.html,https:/</span><span>/docs.google.com/a/zikula.org/document/edit?authkey=CPCU0Us&hgd=1&id=1fcqb93Sn-hR9c0mkN6m_tyWnmEvoswKBtSc0tKkZmJA,http:/</span><span>/www.chisimba.com,n/a,https:/</span><span>/github.com/Respect/project-info/blob/master/coding-standards-sample.php,n/a,Object Calisthenics for PHP,http:/</span><span>/doc.nette.org/en/coding-standard,http:/</span><span>/flow3.typo3.org,https:/</span><span>/github.com/propelorm/Propel2/wiki/Coding-Standards,http:/</span>/developer.joomla.org/coding-standards.html
voting,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>no</span>,<span>no</span>,<span>no</span>,?,<span>yes</span>,<span>no</span>,<span>yes</span>
indent_type,<span>4</span>,<span>4</span>,<span>4</span>,<span>4</span>,<span>4</span>,tab,<span>4</span>,tab,tab,<span>2</span>,<span>4</span>,tab,<span>4</span>,<span>4</span>,<span>4</span>,<span>4</span>,<span>4</span>,<span>4</span>,tab,tab,<span>4</span>,tab
line_length_limit_soft,<span>75</span>,<span>75</span>,<span>75</span>,<span>75</span>,<span>no</span>,<span>85</span>,<span>120</span>,<span>120</span>,<span>80</span>,<span>80</span>,<span>80</span>,<span>no</span>,<span>100</span>,<span>80</span>,<span>80</span>,?,?,<span>120</span>,<span>80</span>,<span>120</span>,<span>no</span>,<span>150</span>
line_length_limit_hard,<span>85</span>,<span>85</span>,<span>85</span>,<span>85</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>100</span>,?,<span>no</span>,<span>no</span>,<span>no</span>,<span>100</span>,<span>100</span>,?,<span>120</span>,<span>120</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>
class_names,studly,studly,studly,studly,studly,studly,studly,studly,studly,studly,studly,lower_under,studly,lower,studly,studly,studly,studly,?,studly,studly,studly
class_brace_line,next,next,next,next,next,same,next,same,same,same,same,next,next,next,next,next,next,next,next,same,next,next
constant_names,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper,upper
true_false_null,lower,lower,lower,lower,lower,lower,lower,lower,lower,upper,lower,lower,lower,upper,lower,lower,lower,lower,lower,upper,lower,lower
method_names,camel,camel,camel,camel,camel,camel,camel,camel,camel,camel,camel,lower_under,camel,camel,camel,camel,camel,camel,camel,camel,camel,camel
method_brace_line,next,next,next,next,next,same,next,same,same,same,same,next,next,same,next,next,next,next,next,same,next,next
control_brace_line,same,same,same,same,same,same,next,same,same,same,same,next,same,same,next,same,same,same,same,same,same,next
control_space_after,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>no</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>no</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>
always_use_control_braces,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>no</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>no</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>no</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>,<span>yes</span>
else_elseif_line,same,same,same,same,same,same,next,same,same,next,same,next,same,next,next,same,same,same,same,same,same,next
case_break_indent_from_switch,<span>0</span>/<span>1</span>,<span>0</span>/<span>1</span>,<span>0</span>/<span>1</span>,<span>1</span>/<span>2</span>,<span>1</span>/<span>2</span>,<span>1</span>/<span>2</span>,<span>1</span>/<span>2</span>,<span>1</span>/<span>1</span>,<span>1</span>/<span>1</span>,<span>1</span>/<span>2</span>,<span>1</span>/<span>2</span>,<span>1</span>/<span>1</span>,<span>1</span>/<span>2</span>,<span>1</span>/<span>2</span>,<span>1</span>/<span>2</span>,<span>1</span>/<span>2</span>,<span>1</span>/<span>2</span>,<span>1</span>/<span>2</span>,<span>0</span>/<span>1</span>,<span>1</span>/<span>1</span>,<span>1</span>/<span>2</span>,<span>1</span>/<span>2</span>
function_space_after,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>
closing_php_tag_required,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>yes</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>yes</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>yes</span>,<span>no</span>,<span>no</span>
line_endings,LF,LF,LF,LF,LF,LF,LF,LF,?,LF,?,LF,LF,LF,LF,?,,LF,?,LF,LF,LF
static_or_visibility_first,static,?,static,either,either,either,visibility,visibility,visibility,either,static,either,?,visibility,?,?,either,either,visibility,visibility,static,?
control_space_parens,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>yes</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>yes</span>,?,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>
blank_line_after_php,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>yes</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>no</span>,<span>yes</span>,<span>yes</span>,<span>no</span>,<span>no</span>,<span>yes</span>,?,<span>yes</span>,<span>yes</span>,<span>no</span>,<span>yes</span>,<span>no</span>,<span>yes</span>,<span>no</span>
class_method_control_brace,next/next/same,next/next/same,next/next/same,next/next/same,next/next/same,same/same/same,next/next/next,same/same/same,same/same/same,same/same/same,same/same/same,next/next/next,next/next/same,next/same/same,next/next/next,next/next/same,next/next/same,next/next/same,next/next/same,same/same/same,next/next/same,next/next/next</code>

调查说明

indent_type: The type of indenting. tab = “Use a tab”, 2 or 4 = “number of spaces”

line_length_limit_soft: The “soft” line length limit, in characters. ? = not discernible or no response, no means no limit.

line_length_limit_hard: The “hard” line length limit, in characters. ? = not discernible or no response, no means no limit.

class_names: How classes are named. lower = lowercase only, lower_under = lowercase with underscore separators, studly = StudlyCase.

class_brace_line: Does the opening brace for a class go on the same line as the class keyword, or on the next line after it?

constant_names: How are class constants named? upper = Uppercase with underscore separators.

true_false_null: Are the true, false, and null keywords spelled as all lower case, or all upper case?

method_names: How are methods named? camel = camelCase, lower_under = lowercase with underscore separators.

method_brace_line: Does the opening brace for a method go on the same line as the method name, or on the next line?

control_brace_line: Does the opening brace for a control structure go on the same line, or on the next line?

control_space_after: Is there a space after the control structure keyword?

always_use_control_braces: Do control structures always use braces?

else_elseif_line: When using else or elseif, does it go on the same line as the previous closing brace, or does it go on the next line?

case_break_indent_from_switch: How many times are case and break indented from an opening switch statement?

function_space_after: Do function calls have a space after the function name and before the opening parenthesis?

closing_php_tag_required: In files containing only PHP, is the closing ?> tag required?

line_endings: What type of line ending is used?

static_or_visibility_first: When declaring a method, does static come first, or does the visibility come first?

control_space_parens: In a control structure expression, is there a space after the opening parenthesis and a space before the closing parenthesis? yes = if ( expr),no=if(expr).

blank_line_after_php: Is there a blank line after the opening PHP tag?

class_method_control_brace: A summary of what line the opening braces go on for classes, methods, and control structures.

调查结果

<code><span>indent_type:</span>
    tab: <span>7</span><span>2</span>: <span>1</span><span>4</span>: <span>14</span><span>line_length_limit_soft:</span>
    ?: <span>2</span>
    no: <span>3</span><span>75</span>: <span>4</span><span>80</span>: <span>6</span><span>85</span>: <span>1</span><span>100</span>: <span>1</span><span>120</span>: <span>4</span><span>150</span>: <span>1</span><span>line_length_limit_hard:</span>
    ?: <span>2</span>
    no: <span>11</span><span>85</span>: <span>4</span><span>100</span>: <span>3</span><span>120</span>: <span>2</span><span>class_names:</span>
    ?: <span>1</span>
    lower: <span>1</span>
    lower_under: <span>1</span>
    studly: <span>19</span><span>class_brace_line:</span>
    next: <span>16</span>
    same: <span>6</span><span>constant_names:</span>
    upper: <span>22</span><span>true_false_null:</span>
    lower: <span>19</span>
    upper: <span>3</span><span>method_names:</span>
    camel: <span>21</span>
    lower_under: <span>1</span><span>method_brace_line:</span>
    next: <span>15</span>
    same: <span>7</span><span>control_brace_line:</span>
    next: <span>4</span>
    same: <span>18</span><span>control_space_after:</span>
    no: <span>2</span>
    yes: <span>20</span><span>always_use_control_braces:</span>
    no: <span>3</span>
    yes: <span>19</span><span>else_elseif_line:</span>
    next: <span>6</span>
    same: <span>16</span><span>case_break_indent_from_switch:</span><span>0</span>/<span>1</span>: <span>4</span><span>1</span>/<span>1</span>: <span>4</span><span>1</span>/<span>2</span>: <span>14</span><span>function_space_after:</span>
    no: <span>22</span><span>closing_php_tag_required:</span>
    no: <span>19</span>
    yes: <span>3</span><span>line_endings:</span>
    ?: <span>5</span>
    LF: <span>17</span><span>static_or_visibility_first:</span>
    ?: <span>5</span>
    either: <span>7</span>
    static: <span>4</span>
    visibility: <span>6</span><span>control_space_parens:</span>
    ?: <span>1</span>
    no: <span>19</span>
    yes: <span>2</span><span>blank_line_after_php:</span>
    ?: <span>1</span>
    no: <span>13</span>
    yes: <span>8</span><span>class_method_control_brace:</span>
    next/next/next: <span>4</span>
    next/next/same: <span>11</span>
    next/same/same: <span>1</span>
    same/same/same: <span>6</span></code>

以上就介绍了PHP编码风格指南 (PHP-FIG PSR-2),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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