著作権は原作者に帰属します。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 [転記]PHPコーディング規約 プログラムを書く際に注意すべき点をより詳しく解説しています。 しかし、規範は単なる習慣であり、強制的なものではありません。しかし、良いコードを書く習慣を身につけるには、 個人的にはまだ必要だと思います PHP コーディング標準 原文: http://pear.php.net/manual/en/standards.php 翻訳: Liao Yulei 最終更新日: 2003/05/06 目次 インデント 制御構造 関数呼び出し 関数定義 コメント 含まれるコード PHPコードのマークアップ ヘッダーコメントブロック CVSの使用 サンプルURL 命名規則 --- -------------------------------------------------- ---------------------------- インデント インデントには、タブの代わりに 4 つのスペースを使用します。 Emacs を使用して PEAR コードを編集する場合は、indent-tabs-mode を nil に設定する必要があります。インデント標準に準拠するように Emacs を設定するモードフックの例を次に示します (PHP ファイルを編集するときにこれらの設定が有効になることを確認する必要があります ): (defun php-mode-hook () (setq tab-width 4 using out through out through through through through ' s ' through ' s ' through ‐ to ‐ ‐‐‐ ‐ and (and (string-match "/(PEAR|pear)/" - name) ) (string-match ".php$" (buffer-file-name)))))) 同じ効果を持つ vim ルールは次のとおりです: set Expandtab set shftwidth=4 set Softtabstop=4 タブストップ=4 を設定します ------------------------------------------ ------ -------------------------------------- 制御構造 制御構造には、if、for、while、switch などが含まれます。 if ステートメントの例と switch ステートメントの例を次に示します。 if ステートメントの例: CODE:
[クリップボードにコピー] if (( 条件 1) || (条件 2)) { アクション 1;} elseif ((条件 3) && (条件 4)) { アクション 2; } else { デフォルトアクション; } ?>
switch ステートメント 例: CODE: [クリップボードにコピー] switch (条件) {case 1: action1;休憩; ケース 2: action2 ; break; default: defaultaction; break; } ?> 区別してください。 制御構造の部分を識別するために常に中括弧を使用することを強くお勧めします。中括弧を使用しないことが技術的に可能な場合でも。この により、コードの読みやすさが向上し、構造部分に新しい行を追加した後の論理エラーの発生を回避できます。 元のコード:
CODE: [クリップボードにコピー] if (条件) return true;else return false ; [クリップボードにコピー]
if (条件) do something; // ロジックエラーが発生しました return true; else Return false; [クリップボードにコピー]
if (条件) { 何かをする; } else { return false; } ------------------------------------------------- ----------------------------- 関数呼び出し 関数を呼び出すとき、関数の間にスペースは入れません名前と左括弧には空白文字が必要です。パラメータと左括弧と右括弧の間にスペースを入れてはいけません。 最初のパラメータを除き、他のすべてのパラメータはスペースで区切る必要があります。以下に例を示します: CODE: [クリップボードにコピー] $var = foo($bar, $baz, $quux); ?>
上記のコード例と同様、代入演算では等号の両側にスペースを使用する必要があります。関連する代入操作の場合は、読みやすくするために次の フォームを使用する必要があります: CODE: [クリップボードにコピー] $ short = foo($bar); $long_variable = foo($baz); ?>
---------------------- --- --------------------------------------------------- --- ----------- 関数定義 「One True Brace」によれば、関数: CODE: [クリップボードにコピー] & & & lt;? phpfunction fooFunction($arg1, $arg2 = ''){ if (条件) { } ステートメント; } return $val; } ?>
"1 つの真の中括弧" 慣例として、左中括弧は他のステートメントの後に続くのではなく、単独の行に置く必要があります。
デフォルト値を持つパラメータはパラメータリストの最後に配置する必要があります (実際、PHP 言語定義でもこれが必要です)。適切な場合、関数は常に意味のある値を返す必要があります 。少し長い例を次に示します。 CODE: [クリップボードにコピー] function connect(&$dsn, $persistent = false){ if ( is_array ($dsn)) { $dsninfo = &$dsn; } else { $dsninfo = DB::parseDSN($dsn)]) { , 2000 年代以降の国 ((()) > ------------------------------------------------- ----------------------------- コメント 型 (クラス) のオンライン ドキュメントは PHPDoc ( JavaDoc と同様) の規則です。 PHPDoc の詳細については、 http://www.phpdoc.de/ をご覧ください。 また、文書化されていないコメントの使用も強く推奨されます。一般的なルールは、目的が忘れられやすいコードには短い導入コメントを追加することです。 Perl/シェル スタイルのコメント (#) の代わりに、C スタイルのコメント (/* */) と標準の C++ コメント (//) を使用することをお勧めします。 ---------------------------------------------- --- ---------------------------------- コードをインクルード どこにでも無条件にタイプファイルをインクルードしますつまり、require_once() を使用する必要があります。条件付きでタイプ ファイル をインクルードしたい場合 (例: ファクトリ メソッドを使用)、include_once() を使用する必要があります。どちらかを使用すると、タイプ ファイルに が 1 回だけ含まれるようになります。これらはファイルのリストを共有しているので、混乱することを心配する必要はありません。 require_once() を使用してインクルードされたファイルは、 include_once() に再びインクルードされることはありません。 注: include_once() と require_once() は関数ではなく宣言です。ファイル名を展開するために括弧を使用する必要はありません (ただし、括弧を使用してもエラーは発生しません)。 ---------------------------------------------- --- ---------------------------------- PHP コードタグ 常に < を使用しますか? ?> 短縮表現を使用する代わりに、PHP コードを区切ります。これは、PEAR の一貫性を確保し、さまざまなオペレーティング システムやインストール設定に PHP コードを移植するために必要です。 ---------------------------------------------- --- ---------------------------------- ヘッダコメントブロック 全ソースコードのヘッダPEAR によってリリースされたファイルには、次のコメント ブロックが含まれている必要があります: CODE: [クリップボードにコピー] /* vim: set Expandtab tabstop=4 Softtabstop=4 shftwidth = 4: */// +----------------------------------------------------- --------- ------------------------+// PHP バージョン 4 ------- -------------------------------------- ------- ---+// | Copyright (c) 1997-2002 PHP グループ-------------------------------- ------------------+ // このソース ファイルには、このファイルにバンドルされている PHP ライセンスのバージョン 2.0 が適用されます。ライセンスは | // | から http://www.php.net/license/2_02.txt で入手できます。メモを送信してください。 | // |license@php.net に送信してください。 | // +--------------- ------------ -------------------------------------- ----------+ // |元の著者 // +---------- ---------------------------- ---------------------- ------------+ // // $ Id $ ?> ファイル コメントの作成者リストにコードの寄稿者の名前を追加するという厳密な規則はありません。通常、変更 は「実質的な」ディレクトリに属します (コードの約 10% から 20% が書き換えられたことを意味します)。コードの貢献者が関数 を書き換えたり、新しいプログラム ロジックを貢献したりする場合には例外が発生します。 単純なコードの再編成とバグ修正では、新しい作成者を追加すべきではありません。これは不適切です。 コア PEAR リポジトリにないファイルには、著作権、使用許諾契約、および作成者を示す同様のコメント ブロックが必要です。一貫性を確保するには、すべてのファイルに モードライン (vim および emacs 用) を含める必要があります。 ---------------------------------------------- --- ---------------------------------- CVS の使用 このセクションの内容のみ.net 上の CVS を使用する cvs.php パッケージに適用されます。 各ファイルに $Id $ を含めます (2 つの $ 記号間のキーワードにスペースを含めることはできませんが、このドキュメントは CVS によっても管理されているため 、CVS によって置き換えられないようにスペースを追加する必要があります) 表示する CVS キーワードファイルの現在のステータスや最終変更時刻などの情報。 「最終更新日:」のようなメッセージがすでに存在する場合、$Id $ タグに置き換えられます。 このセクションの残りの部分は、CVS タグとブランチに関する基本的な知識があることを前提としています。 CVS タグは、パッケージ内のファイルがリリースされる前に行われたリビジョンを識別するために使用されます。次のリストは必須および推奨される CVS タグです: RELEASE_n_n (必須) は、リリース バージョンをマークするために使用されます。このタグを使用しない場合、リリース をリリースするときに、他の人が CVS サーバーからパッケージを取得する方法はありません。 QA_n_n (ブランチ、オプション) リリースをリリースする前にリリース候補を提供したい場合は、 ブランチを追加することをお勧めします。このブランチを使用すると、リリースを分離し、リリースをリリースする前に アップデートをこれらのブランチに個別に適用できます。この期間中、トランクでは通常の開発作業を続行できます。 MAINT_n_n (ブランチ、オプション) マイナー修正リリースを作成する必要がある場合 (例: 1.2 の後に 1.2.1 をリリースする)。その後、目標を達成するためのブランチを 作成できます。 RELEASE タグのみが必須です。便宜上、他のタグの使用をお勧めします。 以下は、「Money_Fast」パッケージ 1.2 リリース バージョンにタグを追加する方法の例です: $ cd pear/Money_Fast $ cvs tag RELEASE_1_2 T Fast.php T README T package.xml After上記の操作を行うと、PEAR Web サイトでリリース セットを入手できます。 QA ブランチを設定する方法の例を次に示します。 $ cvs tag QA_2_0_BP ... $ cvs rtag -b -r QA_2_0_BP QA_2_0 $ cvs update -r QA_2_0 $ cvs tag RELEASE_2_0RC1 ..次に、同じブランチからの実際のリリース: $ cvs tag RELEASE_2_0 "QA_2_0_BP" タグは、ブランチの開始をマークするために使用される「ブランチ ポイント」タグです。常にこの のようなマーカーでブランチの始まりをマークすることをお勧めします。 MAINT ブランチは、ブランチの開始点として RELEASE タグを使用できます。 ---------------------------------------------- --- ---------------------------------- 例の URL すべてで使用されている URL アドレス例 これらはすべて「example.com」、「example.org」、「example.net」である必要があります。 ---------------------------------------------- --- ---------------------------------- 命名規則 一般的に言えば、クラス、関数および変数 コードの読み取り者がコードの動作を簡単に理解できるように、名前は常にわかりやすいものにする必要があります。 クラス クラスにはわかりやすい名前を付ける必要があります。略語は可能な限り避けてください。クラス名は常に大文字 で始める必要があります。 PEAR クラスのレベルはクラス名からも反映されます。階層内の各レベルはアンダースコアで区切られます。適切な クラス名の例は次のとおりです。 Log Net_Finger HTML_Upload_Error 関数とメソッド 関数とメソッドは、「studly caps」スタイルを使用して名前を付ける必要があります。他のパッケージの 関数との名前の競合を避けるために、関数には、その関数が配置されているパッケージの名前をプレフィックスとして付ける必要があります。名前の最初の文字 (接頭辞の後) は小文字にする必要があり、新しい単語は大文字で始める必要があります。以下にいくつかの例を示します: connect() getData() buildSomeWidget() XML_RPC_serializeData() プライベート クラスのメンバーと属性 (つまり、クラス メンバーと属性は同じクラスで宣言されたメンバーによってのみ使用される必要があります。ただし、 PHP は必須のプライベート名前空間をサポートしません) はアンダースコアで始まる必要があります。例: _sort() _initTree() $this->_status 定数 定数名は常にすべて大文字で名前を付け、単語をアンダースコアで区切る必要があります。定数名には、大文字のクラス/パッケージ名 name をプレフィックスとして付ける必要があります。例: DB:: パッケージで使用されるすべての定数は DB_ で始まります。 グローバル変数 パッケージでグローバル変数を定義する必要がある場合は、その前にアンダースコアを付け、その後にパッケージ名と別のアンダースコアを続ける必要があります。たとえば、PEAR パッケージは、$_PEAR_destructor_object_list という名前のグローバル変数を使用します。 定義済みの値 true、false、null PHP の組み込み値 true、false、null はすべて小文字で記述する必要があります。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
2024-10-22 09:46:29
2024-10-13 13:53:41
2024-10-12 12:15:51
2024-10-11 22:47:31
2024-10-11 19:36:51
2024-10-11 15:50:41
2024-10-11 15:07:41
2024-10-11 14:21:21
2024-10-11 12:59:11
2024-10-11 12:17:31