検索
ホームページバックエンド開発PHPチュートリアルPHP PSR-2コーディングスタイル仕様

コードスタイルの指定

この仕様は、[PSR-1][] 基本コード仕様の継承および拡張です。

この仕様は、PHP コードを標準化するための一連のルールを策定することにより、さまざまな作成者のコードを参照するときに、さまざまなコーディング スタイルによって引き起こされる不便さを軽減することを目的としています。

複数のプログラマーが複数のプロジェクトで共同作業する場合、共通のコーディング仕様が必要です。
この記事のスタイル仕様は、複数の異なるプロジェクトのコーディング スタイルの共通の特性に基づいています。
したがって、この仕様の価値は私たち全員にあります。それ自体ではなく、このコーディング スタイルに従ってください。

キーワード「しなければならない」(「MUST」)、「してはならない/してはならない」(「MUST NOT」)、「必要」(「必須」)、
「するつもり」(「SHALL」)、「しない」( 「してはならない」)、「すべきである」(「すべきである」)、「すべきではない」(「すべきではない」)、
「推奨する」(「推奨」)、「できる」(「してもよい」)、および「オプション」(" OPTIONAL") については、[RFC 2119][] で詳細に説明されています。

概要


コードは [PSR-1][] のコーディング規約に従わなければなりません。

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

1 行あたりの文字数 は、ソフト的に 80 以内に抑える必要があります。理論的には

120 を超えてはなりませんが、

ハード制限を設けてはなりません 各名前空間宣言と use 宣言ブロックの後に、空行を挿入する必要があります。 クラスの開き中括弧 ({)

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

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

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

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

コントロール構造の左中括弧 ({)

は宣言と同じ行に記述する必要があり、右中括弧 (}) は本文の後の独自の行に 記述する必要があります。 制御構造の左括弧の後と右括弧の前にスペース文字があってはなりません。 1.1. 例

次のサンプル プログラムは、上記の仕様のほとんどを簡単に示しています。

use FooInterface; use OtherVendorOtherPackageBazClass; $b = null) { if ($a === $b) {

bar();

} elseif ($a > $b) { $foo-> ;bar($arg1); } else { BazClass::bar($arg2, $arg3); }

}

Final public static function bar() {

// メソッド本体

}

}
    コードをコピー
  1. 一般ルール


    2.1 基本的なコーディングガイドライン

    コード は、[PSR-1][] のすべての仕様に 準拠する必要があります。

    2.2 ドキュメント

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

    すべての PHP ファイルは

    空行で終わる必要があります。 純粋な PHP コード ファイル

    は最後の ?> 終了タグを省略する必要があります。

    2.3. OK 線の長さ に厳密な制限を設けてはなりません

    ソフトな長さの制約は 120 文字に制限する必要があります

    、この長さを超える場合、コード仕様チェックを備えたエディターは警告を

    発行する必要がありますが、エラー プロンプトを発行してはなりません 各行は 80 文字を超えてはならず、80 文字を超える行は複数行にする必要があります。

    非空白行の後には

    余分なスペースがあってはなりません。 空白行 を使用すると、 コードが読みやすくなり、コードを分割しやすくなります。

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

    コードでは、インデントに 4 つのスペースを使用する必要があり、

    Tab キーを使用してはなりません

    注: インデントにタブ キーの代わりにスペースを使用する利点は、

    コードの相違点の比較、パッチ適用、コードの再読み込み、およびコメントの際の混乱を回避できることです。 また、位置合わせを容易にするために、インデントにスペースを使用します。 2.5. キーワードと True/False/Null

    PHP では、[キーワード][]

    すべて小文字にする必要があります。 定数 true、false、null も すべて小文字でなければなりません。

    名前空間と使用宣言



    名前空間宣言の後に空行を挿入する必要があります。

    すべての使用は名前空間の後に宣言する必要があります。 各 use ステートメントには use キーワードを 1 つだけ含める必要があります。

    use ステートメント ブロックの宣言の後には空行が必要です。 例:


    namespace VendorPackage;

    use FooClass;

    use BarClass as Bar;

    use OtherVendorOtherPackageBazClass;

    // ... 追加の PHP コード ...

    コピーコード
    1. クラス、プロパティ、メソッド
    2. ここでの「クラス」とは、すべてのクラス、インターフェイス、および再利用可能なコード ブロックの特性を指します。
    3. 4.1. 拡張と継承
    4. キーワード extends とimplements
    5. はクラス名と同じ行に記述する必要があります。
    クラスの開き中括弧
    は独自の行を占有する必要があり、閉じ中括弧 はクラス本体の後の独自の行を占有する必要があります。 <? 複数の行に分割することもできます。この場合、継承された各インターフェース名
    は、最初の行も含めて別々の行に分割する必要があります。


    namespace VendorPackage;FooClassを使用;BarClassをBarとして使用;

    OtherVendorOtherPackageBazClassを使用;class ClassName extends ParentClass実装 ArrayAccess、Countable、

    Serializable
    {
    // 定数、プロパティ、メソッド
      }
    1. コードをコピー
    2. 4.2.
    3. 各プロパティにはアクセス修飾子が追加されている必要があります
    4. プロパティを宣言するためにキーワード var を
    5. 使用してはなりません
    各ステートメントで 複数の属性を定義してはなりません。 プロパティが保護されているかプライベートであるかを区別するために、プレフィックスとしてアンダースコアを使用しないでください。

    以下はプロパティ宣言の例です:

    namespace VendorPackage;
      class ClassName
    1. {
    2. public $foo = null;
    3. }
    4. メソッドをコピーします。
    5. すべてのメソッドは
    6. アクセス修飾子を追加する必要があります。
    7. メソッドが保護されているかプライベートであるかを区別するために、プレフィックスとしてアンダースコアを使用しないでください。
    8. メソッド名の後に
    9. スペースがあってはなりません。左中括弧
    10. は単独の行になければならず、閉じ中括弧
    11. はメソッド本体の後に単独の行になければなりません。パラメータの左括弧の後と右括弧の前にスペースを入れてはなりません。
    標準メソッド宣言では、括弧、カンマ、スペース、中括弧の位置に注意して、次の例を参照できます。

namespace VendorPackage;

class ClassName{ public function fooBarBaz($arg1, &$arg2, $arg3 = [])

{

// メソッド本体 }}

コードをコピー

4.4. メソッドのパラメータ

パラメータリストでは、各カンマの後にスペースが必要であり、カンマの前にスペースがあってはなりません。 デフォルト値を持つパラメータは

パラメータリストの最後に配置する必要があります。

namespace VendorPackage;
  1. class ClassName
  2. {
  3. public function foo($arg1, &$arg2, $arg3 = [])
  4. {
  5. // メソッド本体
  6. }
  7. }
  8. コードをコピーします
パラメータリストは複数の行に分割することができます。そのため、最初のパラメータを含む各パラメータは独自の行になければなりません

パラメータリストを複数の行に分割した後、メソッドの閉じ括弧と開き括弧を同じ行に記述し、中央にスペースで区切る必要があります。

namespace VendorPackage;
    class ClassName
  1. {
  2. public function aVeryLongMethodName(
  3. ClassTypeHint $arg1,
  4. &$arg2,
  5. array $arg3 = []
  6. ) {
  7. // メソッド本体
  8. }
  9. }
  10. コードをコピー
4.5. 抽象、最終、静的
抽象宣言や最終宣言を追加する必要がある場合は、アクセス修飾子の前に記述し、その後に static

を記述する必要があります。

namespace VendorPackage;
    abstract class ClassName
  1. {
  2. protected static $foo;
  3. abstract protected function zim();
  4. Final public static function bar()
  5. {
  6. // メソッドbody
  7. }
  8. }
  9. コードをコピー
4.6. メソッドと関数の呼び出し
メソッドや関数を呼び出す場合、メソッド名または関数名とパラメーターの左括弧の間にスペースがあってはならず、またパラメーターの右括弧の前にスペースがあってはなりません。各パラメーターの前にスペースを入れてはなりません が、後ろにスペースを入れなければなりません

bar();$foo->bar($arg1);Foo::bar($arg2, $arg3);

コードをコピー
  1. パラメータ
  2. OK
  3. このとき、最初のパラメータを含む各パラメータは
別々の行に分割する必要があります。

$foo->bar( $longArgument, $longerArgument, $muchLongerArgument

);
    コードをコピー
  1. 制御構造
  2. 制御構造の基本仕様は以下の通りです:
制御構造キーワードの後に​​はスペースが必要です。
左括弧 (.

) の後には

スペースがあってはなりません
右括弧の前に

スペースがあってはなりません)。

右括弧 ) と開始中括弧 { の間には スペースが 1 つ必要です。

構造体の本体は 1 回インデントする必要があります。

閉じ中括弧 }

は、構造体の本体の後の別の行に配置する必要があります。 各構造の本体は

必ず中括弧のペアで囲む必要があります

これにより構造がより構造化され、新しい行を追加する際のエラーの可能性が減ります。 5.1. if、elseif、else 標準の if 構造は次のコードに示すとおりです。大括弧、スペース、中括弧の位置に注意してください。

else と elseif は両方とも前の閉じ中括弧と同じ行にあることに注意してください。

if ($expr1) { // if body

} elseif ($expr2) {

// elseif body} else { // else body;
}


Copyコード

    では、すべての制御キーワードが 1 つの単語であるように見えるように、他のすべての if の代わりにキーワード elseif を使用する必要があります。
  1. 5.2. スイッチとケース
  2. 標準的なスイッチ構造は次のコードのようになります。括弧、スペース、中括弧の位置に注意してください。
  3. case ステートメント
  4. は switch に対して相対的にインデントする必要がありますが、break ステートメントと case 内の他のステートメントは case に対して相対的にインデントする必要があります。
  5. 空ではない case through ステートメントがある場合は、本文に // no Break のようなコメントが必要です。
switch ($expr) { case 0:
echo '最初のケース、ブレイクあり';

Break; case 1: echo '2 番目のケース、失敗する';

// ブレークなし

case 2:
case 3: case 4: echo '3 番目のケース、ブレークの代わりに return';
return;

default:
echo 'デフォルトのケース';
Break;
    }
  1. Copyコード
  2. 5.3. while と do while

    標準化された while ステートメントは次のようになります。大括弧、スペース、中括弧の位置に注意してください。

    1. while ($expr) {
    2. // 構造体
    3. }
    コードをコピー

    標準的な do while ステートメントも同様に、括弧、スペース、およびスペースに注意してください。花の位置。

    1. do {
    2. // 構造体;
    3. } while ($expr);
    コードをコピー
    5.4。

    記述の基準は以下の通りです。括弧、スペース、中括弧の位置に注意してください。

    1. for ($i = 0; $i // 本体
    2. }
    コードをコピー
    5.5.

    標準の foreach ステートメントは次のとおりです。括弧、スペース、中括弧の位置に注意してください。

    1. foreach ($iterable as $key => $value) {
    2. // foreach body
    3. }
    コードをコピー
    5.6.

    標準の try catch ステートメントは次のとおりです。括弧、スペース、中括弧の位置に注意してください。

    1. try {
    2. // 本体を試す
    3. } catch (FirstExceptionType $e) {
    4. // 本体をキャッチ
    5. } catch (OtherExceptionType $e) {
    6. // 本体を試す
    7. }
    コードをコピー

    閉鎖


    クロージャを宣言する場合、キーワード関数の後とキーワード使用の前後にスペースが必要です。 開き中括弧

    は宣言と同じ行に記述する必要があり、閉じ中括弧

    は本文の終わりの直後の行に 続ける必要があります。 パラメータリストと変数リストの左括弧の後と右括弧の前にスペースがあってはなりません。

    パラメータと変数のリストでは、カンマの前にスペースを入れてはならず、コンマの後にスペースを入れなければなりません。

    クロージャ内のデフォルト値を持つパラメータは、リストの最後に配置する必要があります。 標準的なクロージャー宣言ステートメントは次のとおりです。括弧、コンマ、スペース、中括弧の位置に注意してください。

    $closureWithArgs = function ($arg1, $arg2) { // body
    };
      $closureWithArgsAndVars = function ($arg1, $arg2) use ($var1, $var2) {
    1. // body
    2. };
    3. コードをコピー
    4. パラメータ リストと変数リスト
    は複数の行に分割できます。そのため、最初のパラメータや変数を含む各パラメータまたは変数は
    独自の行になければなりません , while リストの閉じ中括弧 とクロージャの開き中括弧
    は同じ行に配置する必要があります

    次の例には、パラメーターと変数のリストが複数の行に分割されている複数の状況が含まれています。

    $longArgs_noVars = function ( $longArgument,
    $longerArgument,
    $muchLongerArgument
      ) {
    1. // body
    2. };
    3. $noArgs_longVars = function () use (
    4. $longバージョン 1 ,
    5. $longerVar2,
    6. $muchLongerVar3
    7. ) {
    8. // body
    9. };
    10. $longArgs_longVars = function (
    11. $longArgument,
    12. $longerArgument,
    13. $muchLongerArgument
    14. ) use (
    15. $longVar1,
    16. $longerV) ar2 、
    17. $ MuchLongervar3 ( $arg) use (
    18. $longVar1,
    19. $longerVar2,
    20. $muchLongerVar3
    21. ) {
    22. // body
    23. };
    24. コードをコピー
    25. クロージャが関数またはメソッド呼び出しのパラメータとして直接使用される場合、上記のルールは引き続き適用されます。
    26. $foo->bar(
    27. $arg1,
    28. function ($arg2) use ($var1) {
    29. // body
    30. },
    31. $arg3
    32. );
    Copyコード

    まとめ


    上記の仕様には、以下を含む (ただしこれらに限定されない) いくつかの見落としが必然的に含まれます。

    グローバル変数と定数の定義

    関数の定義

    演算子と割り当て

    インラインアライメント

    コメントとドキュメントブロック

    クラス名の接頭辞と接尾辞

    ベストプラクティス

    この仕様のその後の改訂と拡張により、上記の欠点が補われます。

    付録 A. アンケート

    この仕様をまとめるために、チームは各メンバーのプロジェクトの共通仕様に関する統計を収集するためのアンケートを作成しました。
    以下はこのアンケート調査のデータであり、ここで確認できます。

    A.1. アンケートデータ
    1. url、http://www.horde.org/apps/horde/docs/CODING_STANDARDS、http://pear.php.net/manual/en/standards.php、http: //solarphp.com/manual/appendix-standards.style,http://framework.zend.com/manual/en/coding-standard.html,http://symfony.com/doc/2.0/contributing/code/ standards.html、http://www.ppi.io/docs/coding-standards.html、https://github.com/ezsystems/ezp-next/wiki/codingstandards、http://book.cakephp.org/ 2.0/en/contributing/cakephp-coding-conventions.html、https://github.com/UnionOfRAD/lithium/wiki/Spec%3A-Coding、http://drupal.org/coding-standards、http:// code.google.com/p/sabredav/、http://area51.phpbb.com/docs/31x/coding-guidelines.html、https://docs.google.com/a/zikula.org/document/edit ?authkey=CPCU0Us&hgd=1&id=1fcqb93Sn-hR9c0mkN6m_tyWnmEvo​​swKBtSc0tKkZmJA、http://www.chisimba.com,n/a、https://github.com/Respect/project-info/blob/master/coding-standards-sample.php ,n/a、PHP 用オブジェクト体操、http://doc.nette.org/en/coding-standard、http://flow3.typo3.org、https://github.com/propelorm/Propel2/wiki/コーディング標準、http://developer.joomla.org/coding-standards.html
    2. 投票、はい、はい、はい、はい、はい、はい、はい、はい、はい、はい、はい、はい、はい、はい、はい、いいえ、いいえ、いいえ、?、はい、いいえ、はい
    3. indent_type,4,4,4,4,4,tab,4,tab,tab,2,4,tab,4,4,4,4, 4,4,tab,tab,4,tab
    4. line_length_limit_soft,75,75,75,75,no,85,120,120,80,80,80,no,100,80,80,?,?,120,80,120,no, 150
    5. line_length_limit_hard,85,85,85,85,no,no,no,no,100,?,no,no,no,100,100,?,120,120,no,no,no,no
    6. class_names,study,study,スタディ、スタディ、スタディ、スタディ、スタディ、スタディ、スタディ、スタディ、下段、スタディ、ロワー、スタディ、スタディ、スタディ、スタディ、スタディ、スタディ、スタディ
    7. class_brace_line、次、次、次、次、次、同じ、次、同じ、同じ、同じ、同じ、次、次、次、次、次、次、次、次、同じ、次、次
    8. 定数名、上、上、上、上、上、上、上、上、上、上、上、上、上、上、上、上、上、上、上、上、上、上
    9. true_false_null、下、下、下、下、下、下、下、下、下、上、下、下、下、上、下、下、下、下、下、上、下、下
    10. メソッド名、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ、ローワーアンダー、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ、ラクダ
    11. method_brace_line、次、次、次、次、次、同じ、次、同じ、同じ、同じ、同じ、次、次、同じ、次、次、次、次、次、同じ、次、次
    12. control_brace_line、同じ、同じ、同じ、同じ、同じ、同じ、次、同じ、同じ、同じ、同じ、次、同じ、同じ、次、同じ、同じ、同じ、同じ、同じ、同じ、次
    13. control_space_after、はい、はい、はい、はい、はい、いいえ、はい、はい、はい、はい、いいえ、はい、はい、はい、はい、はい、はい、はい、はい、はい、はい、はい
    14. always_use_control_braces、はい、はい、はい、はい、はい、はい、いいえ、はい、はい、はい、いいえ、はい、はい、はい、はい、いいえ、はい、はい、はい、はい、はい、はい
    15. else_elseif_line、同じ、同じ、同じ、同じ、同じ、同じ、次、同じ、同じ、次、同じ、次、同じ、次、次、同じ、同じ、同じ、同じ、同じ、同じ、次
    16. case_break_indent_from_switch、0/1,0/1,0/1,1/2,1/2,1/2,1/2,1/1,1/1,1/2,1/2, 1/1,1/2,1/2,1/2,1/2,1/2,1/2,0/1,1/1,1/2,1/2
    17. function_space_after,no,no,いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ
    18. クロージング_php_tag_必須、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、はい、いいえ、いいえ、いいえ、いいえ、はい、いいえ、いいえ、いいえ、いいえ、いいえ、はい、いいえ、いいえ
    19. ラインエンディング、LF、LF、LF、LF、LF、LF、 LF,LF,?,LF,?,LF,LF,LF,LF,?,,LF,?,LF,LF,LF
    20. static_or_visibility_first,static,?,static,どちらか,どちらか,どちらか,可視性,可視性,可視性,どちらか,静的,どちらか,?,可視性,?,?,どちらか,どちらか,可視性,可視性,静的,?
    21. control_space_parens,いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、はい、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ、はい、?、いいえ、いいえ、いいえ、いいえ、いいえ、いいえ
    22. blank_line_after_php、いいえ、いいえ、いいえ、いいえ、はい、いいえ、いいえ、いいえ、いいえ、はい、はい、いいえ、いいえ,はい,?,はい,はい,いいえ,はい,いいえ,はい,いいえ
    23. class_method_control_brace,次/次/同じ、次/次/同じ、次/次/同じ、次/次/同じ、次/次/同じ、同じ/同じ/同じ、次/次/次、同じ/同じ/同じ、同じ/同じ/同じ、同じ/同じ/同じ、同じ/同じ/同じ、次/次/次、次/次/同じ、次/同じ/同じ、次/次/次、次/次/同じ、次/次/同じ、次/次/同じ、次/次/同じ、同じ/同じ/同じ、次/次/同じ、次/次/next
    コードをコピー
    A.2. アンケートの指示

    indent_type:
    インデントの種類。tab = "タブ キーを 1 回使用する"、2 または 4 = "スペースの数"

    line_length_limit_soft:
    1 行あたりの文字数の「ソフト」制限 ? = 回答なし、または回答なし、いいえは制限がないことを意味します。

    line_length_limit_hard:

    1 行あたりの文字数の「ハード」制限 ? = 回答なし、または回答なし、no は制限がないことを意味します。
    class_names:

    クラス名の命名。 lower = 小文字のみが許可されます。 lower_under = アンダースコアで区切られた小文字、studly = StudlyCase キャメルケース スタイル。


    class_brace_line:

    クラスの左中括弧は、class キーワードと同じ行にありますか、それとも次の行にありますか?


    constant_names:

    クラスの定数に名前を付けるには? upper = 大文字をアンダースコアで区切ります。


    true_false_null:

    キーワード true、false、null はすべて小文字ですか、それともすべて大文字ですか?


    method_names:

    メソッド名に名前を付けるには、camel = キャメルケース、 lower_under = アンダースコアで区切られた小文字を使用します。


    method_brace_line:

    メソッドの左中括弧はメソッド名と同じ行にありますか、それとも次の行にありますか?


    control_brace_line:

    コントロール構造の左中括弧は宣言と同じ行にありますか、それとも次の行にありますか?


    control_space_after:

    制御構造キーワードの後に​​スペースはありますか?


    always_use_control_braces:

    コントロール構造は常に中括弧で囲まれていますか?


    else_elseif_line:

    else または elseif

    else または elseif は、前の右中括弧と同じ行にありますか、それとも次の行にありますか?

    case_break_indent_from_switch:

    switch ステートメント内の case と Break は、switch に対して何回インデントする必要がありますか?

    function_space_after:

    関数呼び出しステートメントで、関数名と変数リストの左括弧の間にスペースがありますか?

    クロージング_php_tag_required:

    純粋なPHPコードを含むファイルには?>終了タグが必要ですか?

    line_endings:

    どのタイプの行末を選択しますか?

    static_or_visibility_first:

    静的メソッドを宣言するとき、static はアクセス修飾子の前後に記述する必要がありますか?

    control_space_parens:

    コントロール構造内で、左括弧の後と右括弧の前にスペースがありますか?はい = if ( $expr )、いいえ = if ($expr)。

    blank_line_after_php:

    PHP では開始タグの後に空行が必要ですか?

    class_method_control_brace:

    クラス、メソッド、および制御構造の中括弧の位置統計を開始します。
    A.3. アンケート統計結果

    TAB: 7
    2: 1
    4: 14
      line_length_limit_soft:
    1. ?: 2
    2. no: 3
    3. 75: 4
    4. 85: 1
    5. 100 100 : 1
    6. 12 0:4
    7. 150: 1
    8. line_length_limit_hard:
    9. ?: 2
    10. no: 11
    11. 85: 4
    12. 100: 3
    13. 120: 2
    14. class_names:
    15. ?: 1
    16. lower: 1
    17. _under: 下位 1
    18. スタディ: 19
    19. class_brace_line:
    20. 次: 16
    21. 同じ: 6
    22. constant_names:
    23. 上: 22
    24. true_false_null:
    25. 下: 19
    26. 上: 3
    27. メソッド名:
    28. キャメル: 21
    29. 下_下: 1
    30. メソッドブレース_ライン:
    31. 次:
    32. 同じ: 7
    33. control_brace_line :
    34. 次: 4
    35. 同じ: 18
    36. control_space_after:
    37. いいえ: 2
    38. はい: 20
    39. always_use_control_braces:
    40. いいえ: 3
    41. はい: 19
    42. else_elseif_line:
    43. 次: 6
    44. 同じ: 16スイッチ:
    45. 0/1: 4
    46. 1/1:4
    47. 1/2:14
    48. function_space_after:
    49. No:22
    50. closing_php_tag_required:
    51. no:
    52. :19 yes:3
    53. line_endings:
    54. ?:5
    55. lf:17
    56. static_or_ivivibility_first:
    57. ?:5
    58. :7°静的:4
    59. 可視性:6
    60. CONTROL_SPACE_PARENS:
    61. ?:1
    62. いいえ:19号:2
    63. blank_line_line_after_php:
    64. ?:1
    65. No:13
    66. はい:8
    67. class_control_brace:
    68. next/next//次: 4
    69. 次/次/同じ: 11
    70. 次/同じ/同じ: 1
    71. 同じ/同じ/同じ: 6
    72. コードをコピー
    73. Github (PizzaLiu) から転載
    PHP、PSR

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPコードの最適化:メモリの使用と実行時間の短縮PHPコードの最適化:メモリの使用と実行時間の短縮May 10, 2025 am 12:04 AM

TooptimizePHPcodeforreducedmemoryusageandexecutiontime,followthesesteps:1)Usereferencesinsteadofcopyinglargedatastructurestoreducememoryconsumption.2)LeveragePHP'sbuilt-infunctionslikearray_mapforfasterexecution.3)Implementcachingmechanisms,suchasAPC

PHPメール:ステップバイステップ送信ガイドPHPメール:ステップバイステップ送信ガイドMay 09, 2025 am 12:14 AM

PhpisusedForsedingEmailsDueToitsIttegration withServerMailServicesAndExternalSmtpproviders、自動化とMarketingCampaign.1)SetupYourphpenvironment withebeBironment witheBiserverandphp、保証

PHP経由で電子メールを送信する方法:例とコードPHP経由で電子メールを送信する方法:例とコードMay 09, 2025 am 12:13 AM

メールを送信する最良の方法は、PHPMailerライブラリを使用することです。 1)Mail()関数を使用することはシンプルですが信頼できないため、電子メールがスパムを入力するか、配信できない場合があります。 2)PHPMailerは、より良い制御と信頼性を提供し、HTMLメール、添付ファイル、SMTP認証をサポートします。 3)SMTP設定が正しく構成されていることを確認し、暗号化(StartTLSやSSL/TLSなど)を使用してセキュリティを強化します。 4)大量の電子メールについては、メールキューシステムを使用してパフォーマンスを最適化することを検討してください。

高度なPHPメール:カスタムヘッダーと機能高度なPHPメール:カスタムヘッダーと機能May 09, 2025 am 12:13 AM

customedersandaddadvancedfeaturesinphpemailentalitylivainability.1)customederadddetadata fortrackingandcategorization.2)htmLemailsallowStingtintintintintintinteractivity.3)添付物質の添付物質の添付

php&smtpでメールを送信するためのガイドphp&smtpでメールを送信するためのガイドMay 09, 2025 am 12:06 AM

PHPとSMTPを使用してメールを送信することは、PHPMailerライブラリを介して実現できます。 1)PHPMailerをインストールして構成する、2)SMTPサーバーの詳細を設定する、3)電子メールコンテンツを定義し、4)メールを送信してエラーを処理します。この方法を使用して、電子メールの信頼性とセキュリティを確保します。

PHPを使用して電子メールを送信する最良の方法は何ですか?PHPを使用して電子メールを送信する最良の方法は何ですか?May 08, 2025 am 12:21 AM

BestappRoachforseminginphpisusingthephpmailerlibrarydueToitsReliability、featurrichness、andeaseofuse.phpmailerSupportssmtpは、detairederorhandlingを提供します

PHPでの依存関係注射のベストプラクティスPHPでの依存関係注射のベストプラクティスMay 08, 2025 am 12:21 AM

依存関係注射(DI)を使用する理由は、コードのゆるい結合、テスト可能性、および保守性を促進するためです。 1)コンストラクターを使用して依存関係を注入します。2)サービスロケーターの使用を避け、3)依存関係噴射コンテナを使用して依存関係を管理する、4)依存関係を注入することでテスト可能性を向上させる、5)注入依存性を回避、6)パフォーマンスに対するDIの影響を考慮します。

PHPパフォーマンスのチューニングのヒントとコツPHPパフォーマンスのチューニングのヒントとコツMay 08, 2025 am 12:20 AM

phpperformancetuningisucial cuseenhancess andandandadsand。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。