1. ファイル形式
1. PHP コードのみを含むファイルの場合、ファイル末尾の「?>」は無視されます。これは、余分なスペースやその他の文字がコードに影響を与えるのを防ぐためです。
例:
$foo = 'foo';
2. インデントは、コードの論理結果を反映できるようにする必要があります。これにより、クロスクライアント プログラマ ソフトウェアの柔軟性が確保されるため、スペースを 4 つ使用し、タブ文字 TAB の使用を禁止します。
例:
if (1 == $x) {
$indented_code = 1;
if (1 == $new_line) {
$more_indented_code = 1;
}
}
3. 変数の割り当ては等間隔で配置する必要があります。
例:
$variable = 'デモ';
$var = 'demo2';
4. コードの各行の長さは 80 文字以内に制御する必要があり、最大長は 120 文字を超えてはなりません。 Linux は一般に 80 列単位でファイルを読み取るため、つまり、コード行が 80 文字を超える場合、システムはこれに対して追加の操作命令を支払うことになります。これは小さな問題のように思えるかもしれませんが、完璧を追求するプログラマーが注意し、従うべき規範でもあります。
5. 各行の末尾に余分なスペースを入れることはできません。
2. 命名規則
1. クラス ファイルにはすべて「.class.php」という接尾辞が付けられ、クラス ファイル名には文字のみが許可され、キャメル ケースの名前が使用され、最初の文字が大文字になります (例: DbMysql.class.php)。
2. 構成ファイルと関数ライブラリ ファイル以外のファイルには通常、それぞれ「.inc.php」と「.php」という接尾辞が付けられ、ファイル名には小文字とアンダースコアが使用され、複数の単語がアンダースコアで区切られます(config など)。 inc.php、common.php、install_function.php。
3. Unix 系システムでは大文字と小文字が区別されるため、ファイルの名前付けと呼び出しの大文字と小文字が一致していることを確認してください。
4. クラス名とファイル名は一致しており (上記の大文字と小文字を含む)、クラス名には文字のみが許可されます。たとえば、UserAction クラスのファイル名は UserAction.class.php です。 InfoModel クラスのファイル名は InfoModel.class.php です。
5. コントローラー クラスには UserAction、InfoAction などの Action という接尾辞が付けられ、モデル クラスには UserModel、InfoModel などの Model という接尾辞が付けられ、他のクラスにも Service や Widget などの対応するカテゴリの接尾辞が付けられます。
6. メソッド名は文字のみで構成できます。下線は使用できません。最初の文字は小文字にする必要があり、後続の各単語の最初の文字は大文字にする必要があります。これは、いわゆる「キャメルケース命名」ルールです。 switchModel や findPage など、このメソッドの機能を明確に説明できるようにする必要があります。
7. 属性名は文字のみで構成できます。下線は使用できません。最初の文字は小文字にする必要があり、その後の各単語の最初の文字は大文字にする必要があります。これは、いわゆる「キャメルケース命名」ルールです。 tablePrefix や tableName など。
8. オブジェクトのメンバーにアクセスするには、常に「get」メソッドと「set」メソッドを使用する必要があります。例:
クラスフー
{
保護された $_testObj;
パブリック関数 getTestObj()
{
// ...
}
}
11. private として宣言されたクラス メンバー属性は二重アンダースコア "__" で始まる必要があり、protected として宣言されたクラス メンバー属性はアンダースコア "_" で始まる必要があり、public として宣言されたメンバー属性は常に使用できません。 。
12. 関数の名前には小文字とアンダースコアを使用します。get_client_ip など、関数の機能を明確に説明できるように、詳細であればあるほど良いです。
13. メソッドまたは関数パラメータに必ずしも値を割り当てる必要がない場合は、パラメータがブール値でない限り、関数パラメータのデフォルト値として「false」ではなく「null」を使用します。
14. 変数は小文字とアンダースコアのみで構成できます。$i や $n などの使用は避けられるように、わかりやすい変数名を使用することをお勧めします。詳細であればあるほど良いです。
15. クラス内の定数およびグローバル定数定義は大文字とアンダースコアのみで構成でき、各単語はアンダースコアで区切られます。
16. ブール値と null 値はどちらも小文字です。
3. コーディングスタイル
1. PHP コードは完全な形式 () で区切る必要があります。つまり、PHP の短いタグ () を使用せず、終了タグの後にスペースがないことを確認してください。
2. 文字列がプレーン テキストで構成されている場合 (つまり、変数が含まれていない場合)、区切り文字として常に一重引用符 (') を使用する必要があります。例:
$a = '文字列例';
3. 変数置換の変数は、$+変数名の形式のみを使用できます。例:
$greeting = "こんにちは $name、おかえり!" //
を許可します。
$greeting = "こんにちは、{$name}、おかえり!" //
を許可します。
$greeting = "こんにちは ${name}、おかえり!" // 許可されません
文字列をドット「.」で連結する場合は、文字列とドットをスペースで区切る必要があり、読みやすくするために複数行に分割することができます。この場合、ピリオド「.」は等号「=」と揃える必要があります。例:
$sql = "SELECT `id`, `name` " . " FROM `people` "
. "WHERE `名前` = 'スーザン' "
. "「名前」ASC で注文 ";
配列型表記を使用して配列を構築する場合、読みやすくするために各カンマの後にスペースを追加する必要があります。例: $sampleArray = array(1, 2, 3, 'Think', 'SNS');
4. 配列型指定子を使用して連想配列を宣言する場合、複数の行に分割することをお勧めしますが、美しさを維持するために各行のキーと値が位置合わせされていることも確認する必要があります。例:
$sampleArray = 配列(
'firstKey' => 'firstValue',
'2番目のキー' => '二番目の値'
);
5. 中括弧の先頭は、クラス名の次の行の先頭になければなりません。例:
考えるクラス
{
// ...
}
6. クラス内のすべてのコードは 4 つのスペースでインデントする必要があります。
7. 各 PHP ファイルで宣言できるクラスは 1 つだけです。クラス ファイル内に他のコードを記述することは許可されていますが、推奨されません。本当にコードを追加する必要がある場合は、空白行で区切る必要があります。
8. クラス変数の宣言は、関数の宣言よりも前に、クラスの先頭に配置する必要があります。
9. var シンボルを変数の宣言に使用することはできません。クラス メンバー変数は、プライベート、プロテクト、およびパブリックとして宣言する必要があります。次に、クラス メンバーを public として宣言して直接参照することはできますが、通常は get メソッドと set メソッドを使用してクラス メンバーにアクセスする方が適切です。
10. メソッドは常に、private、protected、または public を使用してスコープを宣言する必要があります。
11. 静的静的メソッドはスコープを宣言する必要があり、プライベートとして宣言する必要はありません。サブクラスに継承したくない場合は、プロテクトまたはパブリックとして宣言する必要があります。
12. 関数またはメソッドの最初の中括弧は、関数宣言に続く行の先頭に置く必要があります。例:
関数 get_client_ip()
{
//…
}
13. 関数またはメソッド名とパラメータ括弧の間に余分なスペースは使用できません。例:
関数 get_client_ip()
{
//…
}
14. 参照は関数パラメータ内でのみ定義でき、リアルタイムで参照を渡すことは禁止されています。例:
// 関数パラメータで定義された参照 - 許可されます
関数defineRefInMethod(&$a)
{
$a = 'a';
}
定義RefInMethod($b);
echo $b; // 'a'
// リアルタイムでの参照の受け渡し - 禁止されています
関数 callTimePassRef($a)
{
$a = 'a';
}
callTimePassRef(&$c);
エコー $c // 'a'
15. 関数またはメソッドの戻り値を括弧で囲むことはできません。括弧で囲むと可読性が低下します。また、将来参照を返すように関数が変更された場合、例外がスローされます。
16. 特にモジュール設計では、可能な限り型ヒントの使用を奨励します。例:
クラスフー
{
パブリック関数 foo(SomeInterface $object)