JoshChen_初心者と上級者向けの PHP 標準への必須の紹介_PHP チュートリアル

WBOY
リリース: 2016-07-21 14:58:59
オリジナル
1140 人が閲覧しました

PHP 仕様
1. コーディング規約が必要な理由
•コーディング規約は、次の理由からプログラマーにとって特に重要です:
1. ソフトウェアのライフサイクルにおいて、80% はメンテナンスに費用がかかります。

2. ライフサイクル全体を通じて元の開発者によって保守されるソフトウェアはほとんどありません。

3. コーディング標準により、ソフトウェアの可読性が向上し、プログラマーが新しいコードをできるだけ早く徹底的に理解できるようになります。

4. ソース コードを製品としてリリースする場合は、ビルドされた他の製品と同様に、それが適切にパッケージ化され、明確であることを確認する必要があります。

2. 概要
•タブのインデントを 4 つのスペースに置き換えます。
•PHP ファイルの下部にある「?>」を削除します。
•プログラムの各行は通常 80 文字未満であり、それを超える場合は複数行で記述する必要があります。
•1 行に 1 つのステートメントのみを記述します。1 行に複数の短いステートメントを記述することはできません。
•ファイルと関数にはコメントを追加する必要があります。
•削除されたコメントコードは速やかに削除する必要があります。
•変数や関数の命名は標準化する必要があります。

3. エディターの設定
3.1. インデント
すべてのインデントにタブの代わりにスペースを使用します。 PHP ファイルでは 4 スペースのインデントが使用され、HTML ファイルと HTML ファイルに埋め込まれた Javascript コードでは 2 スペースのインデントが使用され、個々の Javascript ファイルと CSS ファイルでは 4 スペースのインデントが使用されます。

3.2. 文字エンコーディング
すべての PHP および HTML ファイルは No Bom UTF-8 文字エンコーディングとして保存されます。

4. コードのレイアウト
4.1. ファイルの下部にある「?>」を削除します。

4.2. 比較的独立したプログラムブロック間および変数記述の後には空行を追加する必要があります

例: 次の例は仕様を満たしていません

コードをコピー コードは次のとおりです:
if (!$ valid_ni()){
... // プログラムコード
}
$repssn_ind = $ssn_data['index']->repssn_index;
$repssn_ni = $ssn_data['index']->ni;
である必要があります次のように書かれています:
if (!valid_ni(){

... // プログラムコード
}

$repssn_ind = $ssn_data['index]->repssn_index;

$repssn_ni = $ssn_data[index]->ni;

4.3. 長いステートメントは複数行で記述する必要があります
プログラムの 1 行は少なくする必要があります80文字以上
長いステートメントは複数行で記述する必要があり、優先度の低い演算子で新しい行に分割する必要があり、分割された新しい行はレイアウトを適切にインデントする必要があります。 、ステートメントは読み取れます。

ループや判定などに長い式やステートメントがある場合は、優先度の低い演算子で適切に改行し、演算子を改行の先頭に配置する必要があります。 :

コードコードcodeコードは次のとおりです。
$act_task_table[$frame_id * STAT_TASK_CHECK_NUMBER + $index]->占有

= $stat_poi[index]->占有; $act_task_table[タスク番号]->duration_true_or_false = sys_get_sccp_statistic_state($stat_item);
if (($taskno < $max_act_task_number)
&& (n7stat_stat_item_valid ($stat_item))){
… // プログラムコード
}

for ($i = 0, $j = 0; ($i < $bufferKeyword['word_index']->word_length)
{ … // プログラム コード

}

4.4. ステートメントは 1 つだけ記述します。 line
1 行に複数の短いステートメントを記述することはできません。つまり、1 行に 1 つのステートメントのみを記述します。例: 次の例は仕様に準拠していません

$rect->length = 0; $rect->width = 0;

は次のように記述します:

$rect->length = 0;$rect->width = 0;4.5 を必ず含めます。中括弧
これは、余分な 2 文字を入力するのが面倒なために、コードの明瞭さに問題が生じるもう 1 つのケースです。

例: 次の例は仕様に準拠していません


コードをコピーします

コードは次のとおりです:


if ($condition) do_stuff();

if ($condition)

do_stuff();
while ($condition)

do_stuff (); for ($i = 0; $i do_stuff($i);
次のように記述します
コードをコピーします コードは次のとおりです:

if (condition){
do_stuff();
}
while ($condition){
do_stuff();
}
for ($i = ( ){
case '1':
..program
Break;
case '2':
..program
Break;
}
4.7. 中括弧を置く場所区切り文字プログラム ブロックの (中括弧「{」と「}」) は、それぞれ独立した行に同じ列に配置し、それらを参照するステートメントと左揃えにする必要があります。
関数本体の先頭の右中括弧、クラスの定義、if、for、do、while、switch、case ステートメントは行末に配置し、左中括弧は行末に配置する必要があります。同じ列の右中括弧がある行の先頭

例: 次の例は仕様に準拠していません



コードをコピーします

コードは次のとおりです:

for (...)
{
… // プログラムコード}

if (...)

{
… // プログラムコード

} function example_fun(){ … // プログラムコード
}
は次のように記述します: for (...){
… // プログラムコード
}

if (...){ … // プログラムコード

}

function example_fun(){
... // プログラム コード

}



4.8. シンボルの間にスペースを使用する
この緩やかな方法でコードを記述する目的は、コードをより明確にすることです。

スペースを残すことで得られる明確さは相対的なものであるため、すでに非常に明確なステートメントにスペースを残す必要はありません。ステートメントが十分に明確であれば、括弧内 (つまり、左側の後に) にスペースを追加する必要はありません。括弧と右括弧の前) の場合、複数の括弧の間にスペースを追加する必要はありません。長いステートメントで多くのスペースを追加する必要がある場合は、ステートメント全体を明確にし、部分的にスペースを追加しないでください。演算子にスペースを残す場合は、連続して 2 つ以上のスペースを残さないでください。

例: 次の例は仕様に準拠していません



コードをコピーします


コードは次のとおりです:

$i=0;
if($i<7) ...
if ( ( $i < 7)&&( $j > 8) ) ...

for($i=0; $i<$size; $i++) ...

$i=($j < $size) ?0:1;

do_stuff( $i, "foo", $b );


は次のように記述する必要があります:コードをコピーします
コードは次のとおりです:


$i = 0 ;
if ($i < 7) ...
if (($i <7) && ($j > 8)) ...
for ($i = 0; $i < $size; $i++) ...
$i = ($j < ; $size) ? 0 : 1;
do_stuff($i, "foo", $b);

4.9. 文字列を使用する場合連結文字の場合は、両側にピリオド (.) を追加する必要があります。 スペース。 例: 次の例は仕様に準拠していません
コードをコピーします

コードは次のとおりです:


$str = ' ';
$str = '';
は次のように記述する必要があります: $str = '';


4.10. 空白行の使用
乱れたコードの束を見たい人はいません。コードを記述するときは、コードの可読性を高めるために必ず空白行をいくつか使用します。スペースを適切に使用してコードセグメントを区別すると、コードの論理的な流れがより明確になります。強制的に提供される空白行には、次の 2 つの状況が含まれます:

•?> その前には必ず 1 行の空白行が必要です
•2 つの関数の間には 1 行の空白行が必要です。
•return、die、exit の前に他のステートメントがある場合は、空行を追加する必要があります。
コードの行末に余分なスペースを含めることはできません。

5. コメント
5.1. ファイルヘッダーテンプレート
/**
* ShopEx オンライン ストア ファイルの中国語名
* クラスまたはファイルの説明、ここで HTML を使用できます
*
* @package
* @version $Id$
* @copyright 2003-2008 Shanghai ShopEx Network Tech Co., Ltd.
* @license Commercial
* =========================================== = =======================
*/
5.2. 関数ヘッダーのコメント
この関数を使用するためにプログラマーに知っておくべきことを伝えるコメントが必要です。最小限のコメントには、各パラメータの意味、予期される入力、関数の出力を含める必要があります。コメントでは、エラー条件下での関数の動作 (具体的にはエラー条件とは何か) についても説明する必要があります。 (コメントは、他の人が関数のコードを見なくても、自信を持って自分のコードでこの関数を呼び出すことができることを保証する必要があります。

また、扱いにくい、わかりにくい、または明白ではないコードにコメントを追加することは、間違いなく行うべきことです。ドキュメントで特に重要なのは、コードが行う前提条件、またはコードが正しく機能するための前提条件です。すべての開発者は、アプリケーションのどの部分を見ても、妥当な時間内に何が起こっているのかを判断できる必要があります。

以下のコードをコピーします: /** F * SOME_FUNC * 関数の意味の説明
* この部分は入力できます & lt;/b & gt;
* /

5.3. 廃止されたアノテーションを削除します
廃止されたアノテーションのコードは適時に削除される必要があることに注意してください




5.4. 定数の注釈
物理的な意味を持つすべての変数と定数について、その名前が完全に自明でない場合は、宣言時にその物理的な意味を説明するためにコメントを付ける必要があります。変数、定数、およびマクロのコメントは、それらの隣または右上に配置する必要があります。

例:


コードをコピー

コードは次のとおりです:

// アクティブな統計タスク番号
Define(‘MAX_ACT_TASK_NUMBER’,1000)

Define('MAX_ACT_TASK_NUMBER',1000); // アクティブな統計タスク番号 5.5. コメントの位置
コメントは記述されているコードの近くに配置する必要があり、コードに関するコメントは上または右側に配置する必要があります。単一のステートメント) ) は互いに隣接しており、下に配置することはできません。上に配置する場合は、その上のコードと空白行で区切る必要があります。

例: 次の例は仕様に準拠していません
例 1:



コードをコピー
コードは次のとおりです:

// レプリケートサブシステムインデックスとネットインジケーターを取得します
$repssn_ind = $ssn_data[$index]->repssn_index;

$repssn_ni = $ssn_data[ $index]->ni;例 2: $repssn_ind = $ssn_data[$index]->repssn_index;$repssn_ni = $ssn_data[$index]->ni;// レプリケートサブを取得システムインデックスとネットインジケーターは次のように記述する必要があります
// レプリケートサブシステムインデックスとネットインジケーターを取得します
$repssn_ind = $ssn_data[$index]->repssn_index;
$repssn_ni = $ssn_data[$index]-> ni;


5.6. データ構造宣言に関するコメント
データ構造宣言 (配列) はコメントする必要があります。データ構造に関するコメントは、データ構造の下ではなく隣接して配置する必要があります。構造内の各フィールドのコメントは、このフィールドの右側に配置する必要があります。

例: 以下のように説明します



コードをコピーします

コードは次のとおりです:

// sccp ユーザープリミティブメッセージ名を持つ sccp インターフェース
$sccp_user_primitive = array(
'N_UNITDATA_IND' => 1, // sccp 通知 SCCP ユーザーユニットデータ来ます
'N_NOTICE_IND => 2, // sccp 通知ユーザーNo.7 ネットワークはこのメッセージを送信できません
N_UNITDATA_REQ => 3 // sccp ユーザーのユニット データ送信要求
)

5.7. グローバル変数のコメント
グローバル変数には、その関数と値を含む詳細なコメントが必要です。スコープの内容、それにアクセスする関数またはプロシージャ、およびアクセスする際の注意事項。

5.8. コメントのインデント
コメントは、記述内容と同じようにインデントする必要があります。これにより、プログラムのレイアウトが整い、コメントが読みやすくなり、理解しやすくなります。

例: 次の例は仕様に準拠していません

コードをコピーします コードは次のとおりです:

function example_fun(){
// code one comments
CodeBlock One T // コード 2 つのコメント

CodeBlock Two
}

を次のレイアウトに変更する必要があります:

コード コードを次のようにコピーします:
Function Example_fun () {
// fdgfd
codeblock one
// 2 つのコメントをコード化します

CodeBlock Two
}

5.9. コメントをその上のコードから空白行で区切ります
例: 次の例は、コードがコンパクトすぎることを示しています。

コードをコピーします コードは次のとおりです:
// コード 1 コメント
プログラム コード 1
// コード 2 コメント
プログラム コード 2
は次のように記述する必要があります// コード 1 コメント
プログラムコードワン
// code two comments

program code two

5.10. 連続 case コメント
switch ステートメントの下の case ステートメントについては、特別な事情により、次の case に入る前に 1 つの case を処理する必要がある場合、それを処理する必要があります。 case ステートメントが完了したら、次の case ステートメントの前に明確なコメントを追加します。これにより、プログラマの意図がより明確になり、理由もなく Break ステートメントが省略されるのを効果的に防止できます。
例:


コードをコピーします コードは次のとおりです:
switch ($i){
case 'CMD_INIT':
echo "i = 0";
Break;
case 'CMD_START:
echo "i = 1";// case CMD_A
case 'CMB_A':
echo "i = 2";
Break;
}

5.11. コード内の構造を表す配列変数は次のようにする必要があります。事前に宣言されています。


例: 代 コードをコピーします

次のようにコードします: function Example_fun () {
$ Student = Array (
'name' = & gt; 'Xiaoming', // Name
'addr' = & gt; ' 詳細な住所', //住所
'性別' => 性別
'市' => 市区町村
)
}


5.12.形式は統一されており、単一行コメントには「//...」を使用する必要があり、複数行コメントには /*...*/
のペアを使用する必要があります。
例: 次の例は仕様に準拠していません。

コードをコピーします

コードは次のとおりです: /* accept_flag が TRUE の場合 *//* accept_flag が FALSE の場合 */
if ($receive_flag)


は次のように記述する必要があります:


コードをコピー
コードは次のとおりです: /* accept_flag が TRUE の場合 replace_flag が FALSE の場合 */
if ($receive_flag)


5.13. コメントは主に中国語である必要があります。
コメントは、言語が中国語と英語の両方である場合、非常に流暢で表現できない限り、中国語を使用することをお勧めします。正確な英語。

6. 命名規則
6.1. ピンイン命名法の禁止
コード内でのピンイン命名法は禁止されています。

6.2. 変数の名前付け
変数名はすべて小文字にする必要があり、単語は 1 つのアンダースコアで区切る必要があります。

例: $current_user は正しいですが、$currentuser と $currentUser は正しくありません。

名前は説明的かつ簡潔である必要があります。もちろん、変数名として長い文を使用することは望ましくありませんが、変数が何に使われるかを考えるよりも、もう少し多くの文字を入力する方が良いでしょう。

6.3. 関数の名前付け
単語の間に単一のアンダースコアで区切られた小文字の名前を使用し、動詞と目的語の句で特定の操作を実行する関数に名前を付けることができます。 OOP メソッドの場合、動詞のみにすることができます (名詞はオブジェクト自体です)。テーブル関数の名前付けを許可します。

例:

コードをコピー コードは次のとおりです:

関数 print_record($rec_ind)
関数 input_record()
関数 get_current_color()
関数 is_boy()


動詞テーブル: 追加 / 編集 / 削除 / 終了 作成 / 破壊
first / begin get / release get / set
increment / デクリメント put / get
lock / アンロックオープン / close
min / max old / new start / stop
next / 前のソース / ターゲットの表示 / 非表示
送信 / 受信
カット / ペースト上 / 下

カップリング リスト: is has
プライベート メソッドの場合、_ で始まります。

6.4. ループカウンター
単一文字の変数名が許可されるのは、ループカウンターとして使用される場合のみです。この場合、外側のループのカウンターは常に $i でなければなりません。このループ内にループがあった場合、そのカウンターは $j になり、次に $k になります。ループのカウンターが意味のある名前を持つ既存の変数である場合、この仕様は適用されません。

例:

コードをコピー コードは次のとおりです:

for ($i = 0; $i < $outer_size; $i++){
for ($j = 0; $j < ; $inner_size; $j++){
foo($i, $j);
}

6.5. 関数パラメータは変数名と同じ規則に従います。 do_stuff($a, $b, $c) のような大量の関数は必要ありません。ほとんどの場合、関数の宣言を見るだけで関数の使用方法を知りたいと思います。

7. 可読性

7.1. 演算子の優先順位
演算子の優先順位に注意し、デフォルトの優先順位の使用を避けるために括弧を使用して式の演算順序を明確にしてください。プログラムを読む際の誤解を防ぎ、デフォルトの優先順位が設計思想と一致しないことによるプログラムのエラーを防ぎます。

例: 次のステートメントの式


コードをコピーしますコードは次のとおりです:
$word = ($high << 8) | $low (1)
if (($ a | $b ) && ($a & $c)) (2)
if (($a | $b) < ($c & $d)) (3)
$high << と書いた場合8 | $low
$a | $b && $c & $d
$high < 8 | ) | $low ,
$a | $b && $a & $c = ($a | $b) && ($a & $c),


(1)(2) は問題ありませんが、 $a | $b < $c & $d = $a | ($b < $c) & $d,
(3) は判定条件に誤りがありました。

7.2. 数字を避け、定数を使用する
理解しにくい数字の使用を避け、意味のある定数に置き換えてください。

例: 次のプログラムは読みにくいです。


コードをコピーします

コードは次のとおりです:if ($trunk[$index]->trunk_state == 0){
$trunk[$index]->trunk_state = 1;
... / /プログラムコード
}


を以下の形式に変更する必要があります。
コードをコピー コードは次のとおりです:

define(TRUNK_IDLE, 0)
define(TRUNK_BUSY, 1)

if ($trunk[$index]->trunk_state == TRUNK_IDLE){
$trunk[$index]->trunk_state = TRUNK_BUSY;
... // プログラムコード
}


7.3.密接に関連するコードは、プログラムが読みやすく見つけやすいように、できるだけ隣接する必要があります。

例: 次のコード レイアウトはあまり合理的ではありません。


コードをコピー コードは次のとおりです:
$rect->length = 10;
$char_poi = $str;
$rect->width = 5;

次のフォームに従うと、もう少しわかりやすくなるかもしれません。

コードをコピーします コードは次のとおりです:
$rect->length = 10;
$rect->width = 5; // 長方形の長さと幅は密接に関連しており、がまとめられています。
$char_poi = $str;

8. 関数
8.1. インターフェース関数パラメータの正当性チェック
関数パラメータの正当性チェックは、関数の呼び出し元の責任で行う必要があります (必須ではありません)。

要約すると、外部はメイン、内部は補足、内部は必須ではありません。

8.2. 関数のサイズ

関数のサイズは、コメントと空白行を除いて 100 行に制限されています。

8.3. 関数は 1 つの関数だけで完結します

8.4. 多目的かつ包括的な関数を設計しないでください
複数の関数を統合する関数は、関数の理解、テスト、保守が困難になる可能性があります

8.5. 複数のコードが同じことを繰り返す

複数のコードが同じことを繰り返す場合、機能の分割に問題がある可能性があります。このコード内のステートメント間に実質的な関係があり、それらが同じ機能を完了する場合は、このコードを新しい関数に構築することを検討できます。

9. 品質保証
9.1. 互換性
9.2. 三項演算子、コード行では 1 つのレベルのみが許可されます

三項演算子は、単純なことを行う場合にのみ使用してください。これらは代入にのみ適しており、関数呼び出しや複雑なものにはまったく適していません。誤って使用すると読みやすさに影響を与える可能性があるため、入力を減らすためにこれらを使用することに固執しないでください。

例: 使用すべきでない場合

(($i < $size) && ($j > $size)) ? do_stuff($foo) : do_stuff($bar);


例: 使用する適切な場所 $min = ($i < $j) $i : $j;

9.3. 変数の初期化

変数は使用前に初期化する必要があり、E_NOTICE に error_reporting が追加されます。これは、変数が初期化されていない場合、エラーが報告されることを意味します。この問題は、HTML フォームで渡される変数を確認するときに最もよく発生します。これらのエラーは、組み込みの isset() 関数または empty() 関数を使用して変数が設定されているかどうかを確認することで回避できます。


例: 古い方法

if ($forum) ...

新しい方法: if (!empty($forum)) ...
if (isset($forum)) ...

9.4. PHP で文字列を引用するには、一重引用符を使用する方法と二重引用符を使用する方法の 2 つがあります。主な違いは、パーサーは二重引用符で囲まれた文字列では変数置換を実行しますが、一重引用符で囲まれた文字列では変数置換を実行しないことです。したがって、実際に文字列に対して変数置換を実行する必要がない限り、常に一重引用符を使用する必要があります。こうすることで、置換を実行する必要のない大量の文字列をパーサーに解析させる煩わしさを回避できます。同様に、関数呼び出しの一部として文字列変数を使用する場合、その変数を引用符で囲む必要はありません。繰り返しますが、これはパーサーに不必要な作業を追加するだけです。いずれにせよ、二重引用符で囲まれたほとんどすべてのエスケープ シーケンスは一重引用符では機能しないことに注意してください。この規則によりコードが読みにくくなる場合は、注意して自由にコードを破ってください。

例: 次の例は仕様に準拠していません


コードをコピーします

コードは次のとおりです:$str = "これは、パーサーが検索するための変数を持たない非常に長い文字列です。" ;
do_stuff("$str"
;


読みやすさの理由から二重引用符を引用符として使用する必要がある場合は、すべての変数を {} で囲む必要があることに注意してください: $str = " これは '{$what}' であり、パーサーが見つける変数はありません。 "

9.5. 連想配列のキー名
PHPでは連想配列のキー名として引用符のない文字列を使用することができます。これは望ましくありません。混乱を避けるために、文字列を引用符で囲む必要があります。これは文字列を使用する場合にのみ当てはまり、変数を使用する場合には当てはまらないことに注意してください。例: 次の例は仕様に準拠していません

$foo = $assoc_array[blah];
は次のように記述する必要があります:
$foo = $assoc_array['blah'];

9.6. 演算子の簡略化
可読性の問題を引き起こす簡略化演算子は、簡略化されたインクリメント ($i++) およびデクリメント ($i--) 演算子だけです。これらの演算子は式の一部として使用しないでください。ただし、独自の回線でも使用できます。式の中でこれらを使用するだけでは、デバッグの悩みを解決するのに十分ではありません。

例: 次の例は仕様に準拠していません

コードをコピーします コードは次のとおりです:

$array[++$i] = $j;
$array[$i++] = $k;
は次のように記述します: $i++;
$array[$i] = $j;
$i++;

9.7 if と else の書き方。 if
条件文内に複数の条件があり、変数値の判定がある場合、変数判定文を他の条件文よりも前に置く必要があります。

例: 次の例は仕様に準拠していません


コードをコピーします コードは次のとおりです:
if (function_exists('ob_gzhandler') && $val == 1){
}
should if ($val = = 1 && function_exists('ob_gzhandler')){
}
ただし、PHP の else if と elseif の関数は基本的に同じです。ただし、コードの統一性を保つため (else if が不安定になるという噂もあります)、elseif の間にスペースを入れないようにする必要があります: if ($bool == 2){
}elseif ($n = 1){
}

9.8. 入力変数の初期化
関数のパラメータであっても、URL を介して渡される変数であっても、呼び出す前に前処理してデフォルト値を設定する必要があります。

文字列はトリミングしてエスケープする必要があり、変数の値が予想範囲内にある場合は、数値変数の場合は、変数の不正な値をそれに応じて処理する必要があり、intval または floatval を処理する必要があります。

9.9. require と include

プログラム内でインクルード ファイルを使用する必要がある場合、require_once または include_once を使用する必要があり、require または include は許可されません。

プログラムに含める必要があるファイルには require_once のみを使用でき、include_once は条件付きで含める特定のファイルを参照する場合にのみ使用できます。

9.10. ファイル名

ファイル名はすべて小文字にし、単語を 1 つのアンダースコアで区切る必要があります。

例: current_user.php は正しいですが、currentuser.php と currentUser.php は正しくありません。

名前は説明的かつ簡潔である必要があります。もちろん、長い文章をファイル名として使用することは望ましくありませんが、何のためのファイルなのかを考えるよりも、もう少し多くの文字を入力する方が良いでしょう。

10. SQL 構文
10.1. SQL コードのレイアウト
私たちは皆異なるエディター設定を使用しているため、SQL コードで列の配置などの面倒なことをしようとしないでください。どのような方法を使用する場合でも、ステートメントをそれぞれの行に分割します。 SQL コードがどのようになるかの例を次に示します。改行、大文字の使用、括弧の使用に注意してください。

例:


コードをコピー コードは次のとおりです:
SELECT field1 AS something, field2, field3
FROM `table` a, `table` b
WHERE (this = that) AND (this2 = その2)


10.2. テーブル名とフィールド値
SQL ステートメントのテーブル名とフィールド名に予約語を使用することは避けてください。同時に、すべてのフィールド値の変数名が数値である場合は、強制的な型変換が必要になります。 intval、floatval…

10.3. SQL select ステートメント
クエリ対象のフィールドが既知であることを前提として、次のコードは許可されません:

SELECT * FROM `mytable`
代わりに、各フィールド名を書き込むこともできます。怠惰にしないでください。 SELECTcol1,col2,col3 FROM `mytable`
既知の数のレコードを取得する必要がある場合は、LIMIT オフセット、カウントを使用し、LIMIT なしで SELECT ステートメントを使用しないようにしてください。

レコード数が必要な場合や条件を満たす場合は、SELECT count([*|col1]) FROMを使用し、SELECT col1 FROMは使用しないようにしてください。

論理演算を実行する必要がある場合は、「等しくない」を使用しないでください。「以上」または「以下」を使用できます。

10.4. SQL 挿入ステートメント
SQL INSERT ステートメントは 2 つの異なる方法で記述できます。挿入する列を明示的に指定するか、データ内の列の順序がすでに分かっており、詳細に指定する必要がありません。ここでは、挿入する列を指定する前者のアプローチを使用したいと考えています。これは、アプリケーション コードがデータベース内のフィールドの順序に依存せず、フィールドを追加してもクラッシュしないことを意味します (もちろん、フィールドが NOT NULL として指定されている場合を除く)。

例:
# これは私たちが望むものではありません

コードをコピーします コードは次のとおりです:

INSERT INTO `mytable`
VALUES ('something', 1, 'else')

#これは正しいです。
コードをコピーします コードは次のとおりです:

INSERT INTO `mytable` (column1, column2, column3)
VALUES ('something', 1, 'else')

11.
11.1 . 区切り文字
は <{ }>

11.2. 二重引用符、一重引用符
Dreamweaver が Smarty ステートメント内の二重引用符を " に書き換えないようにするには、Smarty 中括弧内では二重引用符を使用できませんが、一重引用符を使用する必要があります。

間違った書き方:
<{if $user_name eq ""}>匿名ユーザー<{/if}>
<{insert name=”query_info”}>
正しい書き方:
< { if $user_name eq ''}>匿名ユーザー<{/if}>
<{insert name='query_info'}>

11.3. HTML 属性値を条件付きで設定する必要がある場合テンプレート内で HTML 要素の属性値を設定する場合、すべてのステートメントを二重引用符で囲む必要があります。間違ったコード:

コードをコピー コードは次のとおりです:
<{if $promote_price>0}>"promote_goods"
<{else}>"normal_goods "< ;{/if}>
><{$goods.goods_name}>


正しい書き方:

コードをコピーします コードは次のとおりです:
<{$goods.goods_name}>< /div>

11.4. 条件付き修飾子
Smarty では、eq、neq、gt、lt などを使用して、それぞれ ==、!=、> を表すことができます。では、どれを使用すればよいでしょうか?
Smarty ステートメントが HTML タグに含まれる場合、== や != などの修飾子は使用できません。このような修飾子が使用されると、このシンボルまたはその他の HTML 関連のシンボルが Dreamweaver によって自動的にエスケープされる可能性があります。

つまり、eq、gt などの条件修飾子を使用し、== や > を直接使用することは避けてください。

http://www.bkjia.com/PHPjc/328171.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/328171.html技術記事 PHP の仕様 1. プログラマにとってコーディング規約が重要である理由は次のとおりです: 1. ソフトウェアのライフサイクルにおいて、コストの 80% は...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート