PHP コーディング仕様
1. ファイル形式
1. php コードのみを含むファイルの場合、ファイル末尾の「?>」は無視されます。これは、余分なスペースやその他の文字がコードに影響を与えるのを防ぐためです。
例:
$foo = 'foo';
2. インデントは、コードの論理結果を反映できるようにする必要があり、スペースを 4 つ使用することを禁止します。タブ文字 TAB を使用します。これにより、クライアント プログラマ ソフトウェア間での柔軟性が確保されます。
例:
if (1 == $x) {
$indented_code = 1;
if (1 == $new_line) {
$more_indented_code = 1;
}
}
3. 変数の割り当ては等間隔で配置する必要があります。
例:
$variable = 'demo';
$var = 'demo2';
4. コードの各行の長さは 80 文字以内に制御する必要があり、最大長は 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 です。
5. コントローラー クラスには、UserAction、InfoAction などの Action という接尾辞が付けられ、UserModel、InfoModel などのモデル クラスには、Service や Widget などの対応するカテゴリという接尾辞が付けられます。
6. メソッド名は文字のみで構成でき、アンダースコアは使用できません。最初の文字は小文字にする必要があり、後続の各単語の最初の文字は大文字にする必要があります。これは、いわゆる「キャメルケース命名」です。 switchModel や findPage など、メソッドの機能を明確に記述する必要があります。
7. 属性名は文字のみで構成でき、アンダースコアは使用できません。最初の文字は小文字にする必要があり、後続の各単語の最初の文字は大文字にする必要があります。これはいわゆる「キャメルケース命名」です。 tablePrefix、tableName などのルール。
8. オブジェクトのメンバーにアクセスするには、常に「get」メソッドと「set」メソッドを使用する必要があります。例:
class Foo
{
protected $_testObj;
public function getTestObj()
{
return $this->_testObj;
}
パブリック関数 setTestObj($testObj)
二重アンダースコア「__」で始まります。保護として宣言される場合は、通常、単一のアンダースコア「_」で始まる必要があります。メソッドにはアンダースコアが含まれません。例:
class Foo
{
private function __example()
{
// ...
}
protected function _example()
{
// ...
}
public function example()
{
メソッドはグローバル関数として定義されているため、クラス内で静的形式で定義する必要があります。例:
class Think
{
// ...
static public function autoload($classname)
{
// ...
}
}
11. private として宣言されたクラス メンバー属性の前には 2 つのアンダースコア「__」を付ける必要があり、protected として宣言したクラス メンバー属性の前にはアンダースコア「_」を付ける必要があります。二重アンダースコア「__」は常に使用できません。
12. 関数の名前には小文字とアンダースコアを使用します。get_client_ip など、関数の機能を明確に説明できるほど詳細である必要があります。
13. メソッドまたは関数パラメータに必ずしも値を割り当てる必要がない場合は、パラメータがブール値でない限り、関数パラメータのデフォルト値として「false」ではなく「null」を使用します。
14. 変数は小文字とアンダースコアのみで構成できます。$i や $n などは使用しないように、わかりやすい変数名を使用することをお勧めします。
15. クラスおよびグローバル定数定義の定数は大文字とアンダースコアのみで構成され、各単語はアンダースコアで区切られます。
16. ブール値と null 値は両方とも小文字です。
3. コーディングスタイル
1. PHP コードは完全な形式 () で区切る必要があります。つまり、PHP の短いタグ () を使用しないでください。 … ?>))、終了タグの後にスペースがないことを確認してください。
2. 文字列がプレーン テキストで構成されている場合 (つまり、変数が含まれていない場合)、区切り文字として常に一重引用符 (') を使用する必要があります。例:
$a = 'Example String';
3. 変数置換の変数は、$+変数名の形式のみ許可されます。例:
$greeting = "こんにちは、$name、おかえり!"; // 許可
$greeting = "こんにちは、{$name}、おかえり!"; // 許可
$greeting = " Hello ${name}, welcome back!"; //
は使用できません。ピリオド「.」を使用して文字列を接続する場合、文字列とピリオドはスペースで区切る必要があり、分割することは許可されています可読性を高めるために複数行に分割してください。この場合、ピリオド「.」は等号「=」と揃える必要があります。例:
$sql = "SELECT `id`, `name` " . " FROM `people` "
. "WHERE `name` = 'Susan' "
. ASC ";
配列型表記を使用して配列を構築する場合、読みやすくするために各カンマの後にスペースを追加する必要があります。例: $sampleArray = array(1, 2, 3, 'Think', 'SNS');
4. 配列型指定子を使用して連想配列を宣言する場合は、それを複数行に分割することをお勧めします。しかし同時に、美しさを維持するために各行のキーと値が揃っていることを確認する必要があります。例:
$sampleArray = array(
'firstKey' => 'firstValue',
'secondKey' => 'secondValue'
);
5.中括弧はクラス名の下の行の先頭に置く必要があります。例:
class Think
{
// ...
}
6. クラス内のすべてのコードは 4 つのスペースでインデントする必要があります。
7. 各 php ファイルは 1 つのクラスのみを宣言できます。クラス ファイル内に他のコードを記述することは許可されていますが、推奨されません。本当にコードを追加したい場合は、空白行で区切る必要があります。
8. クラス変数の宣言は、関数の宣言の前にクラスの先頭に配置する必要があります。
9. 変数の宣言に var シンボルを使用することはできません。クラス メンバー変数はプライベート、プロテクト、パブリックとして宣言する必要があります。次に、クラス メンバーを public として宣言して直接参照することはできますが、通常は get メソッドと set メソッドを使用してクラス メンバーにアクセスする方が適切です。
10. メソッドは常に、private、protected、または public を使用してスコープを宣言する必要があります。
11. 静的静的メソッドはスコープを宣言する必要があり、プライベートとして宣言する必要はありませんが、サブクラスによって継承されたくない場合は、final として宣言する必要があります。
12. 関数またはメソッドの最初の中括弧は、関数宣言の後の次の行の先頭に置く必要があります。例:
function get_client_ip()
{
// …
}
13. 関数名またはメソッド名とパラメーターの括弧の間には、余分なスペースを含めることはできません。例:
function get_client_ip()
{
// …
}
14. 参照は関数パラメーターでのみ定義でき、リアルタイムでの参照の受け渡しは禁止されています。例:
// 関数パラメーターで定義された参照 - 許可されます
function defineRefInMethod(&$a)
{
$a = 'a';
}
defineRefInMethod($b) ; >}
callTimePassRef(&$c);
echo $c; // 'a'
15. 関数またはメソッドの戻り値を括弧で囲むことはできません。そうしないと読みにくくなります。今後、参照を返すように関数が変更された場合、例外がスローされます。
16. 特にモジュール設計では、可能な限り型ヒントの使用を奨励します。例:
class Foo
{
public function foo(SomeInterface $object)
{
}
public function bar(array $options)
{
}
}
17. 関数とメソッドのパラメータはカンマ + スペースで区切る必要があります。
18. パラメーターが配列である関数の場合、可読性を高めるためにパラメーター内の配列を複数の行に分割する必要があります。例:
threeArguments(array(1, 2, 3), 2, 3);
threeArguments(array(1, 2, 3, '思考',
'SNS', $a, $b, $c,
56.44, $d, 500), 2, 3);
19 「if」、「else」、「else if」に基づく条件制御では、文と括弧をスペースで区切る必要があります。中括弧「{」の先頭は条件制御文と同じ行になければなりません。末尾の「}」は常に 1 行と上部スペースを占有する必要があり、制御フローのコンテンツは 4 つのスペースでインデントする必要があり、「elseif」は使用しないでください。
if ($condition) {
// ...
} else if ($_condition) {
// ...
} else {
// ...
}
20. 条件制御ステートメントの条件括弧内では、演算子を他の要素と区切るためにスペースを使用する必要があります。長い論理判断が発生した場合は、インライン括弧を使用して各ロジックを区切ることをお勧めします。例:
if (($a != 2) and ($b == 1)) {
$a = $b;
}
21. 「switch」条件付きコントロール。ステートメントでは、テストするパラメータはスペースで他の要素と区切る必要があります。例:
switch ($num) {
// …
}
22. 「switch」ステートメントの内容は 4 つのスペースでインデントする必要があり、「case」の内容は条件付きコントロールはインデントする必要があります。インデントには 4 つのスペースが必要です。例:
switch ($indentedSpaces) {
case 2:
echo "error";
Break;
case 4:
echo "correct";
Break;
default:
Break;
}
23. 「default」コントロールは常に「switch」ステートメントに含める必要があります。
24. 「case」コンテキストで「break」または「return」を省略する必要がある場合があります。この場合、これらの「case」ステートメントに「// no Break here」コメントを追加する必要があります。例:
switch ($numPeople) {
case 1: // ここにはブレークはありません
case 2:
Break;
default:
Break;
}