1.命名規則
1.命名規則の要約
1)意味のある名前を使用する
#goodif($ currentYear> 2009)...#badif($ t> 2009)..。
2)略語では、最初の文字のみを大文字にします
#goodfunction getHttpHost()#badfunction getHTTPHost()
2.クラスの命名
1)クラスは名詞の単数形で名前を付ける必要があり、最初の文字は大文字で、大文字と小文字が混在しています。
クラスSqlStatement {...}
2)物事のグループを表すクラスは、複数形を使用する必要があります
クラスSqlStatements {...}
3)型の始まりは、型の終わりよりも識別しやすい
です。既知の型の変数の場合、型で終わるよりも型で始まる名前を識別する方が簡単です。
class ErrorConnection extends Error {// ...} $ arrCatids = array(1,2,3,4,5,6); $ strCatids = '1,2,3,4,5,6';
4)インターフェイスのデフォルトの実装クラスはDefaultで始めることができます
class DefaultSqlBuilder extends ISqlBuilder {// ...}
3.インターフェースの命名
インターフェイスの名前は、文字「I」で始まる名詞または形容詞である必要があります
インターフェイスISqlEngine {}インターフェイスISortable {}
4.変数/属性の命名
1)属性名は小文字で始まり、キャメルケース規則を採用する必要があります。
public $ userAuth;
3)定数の名前はすべて大文字でなければなりません。
すべての文字は大文字で、単語間のアンダースコアで区切られます。
const SEARCH_GOOGLE = 1; const SEARCH_YAHOO = 2;
4)オブジェクトのグループに名前を付けるときは、複数形を使用します
パブリック$ books;
5)ブール変数は負の名前を使用しないでください
#goodpublic $ isFound; public $ isEnough; #badpublic $ isNotFound; public $ isNotEnough;
6)ネストされたループでは、意味のある豊富な名前を使用してループ制御変数に名前を付けます
#goodfor($ row = 0; $ i <getRows(); $ row ++){for($ col = 0; $ j <getCols(); $ col ++){// ...}}#badfor($ i = 0; $ i <getRows(); $ i ++){for($ j = 0; $ j <getCols(); $ j ++){// ...}}
7)入力変数はスネーク形式で記述され、カスタム関数変数はスネーク形式で記述されます
#コントローラー変数クラスUserController extends Controller {function postLogin(Request $ request){//これは蛇のような書き込みです$ order_status = $ request-> input( 'order_status');}}#カスタム関数variable#ここに入力変数スネーク形式で記述されていますfunctionroute_url($ route、$ params、$ option_params){// ...}
5.関数の命名
拼音の命名法はありません
1)クラス関数の名前は小文字で始まり、キャメルケース規則を採用しています
関数getCurrentYear()
2)動詞を使用して関数に名前を付ける
#π词表:add / edit / removebegin / endcreate / destroyfirst / last get / releaseget / setincrement / decrementput / getlock / Unlock open / closemin / max old / new start / stopnext / previoussource / targetshow / hidesend / receivecut / pasteup / down#系词表:is / has
function startDatabase()function getDatabaseStatus()
3)関数名は、重複を避けるためにクラス名またはオブジェクト名を省略できます
#goodclass Font {function getFamily();}#badclass Font {function getFontFamily();}
4)シングルトンクラスは、getInstance()と呼ばれる静的関数を介して一意の値を返す必要があります
class Toolkit {private static const toolkit = new Toolkit(); public static function getInstance(){return toolkit;}}
2.ファイル形式/スキル
1.空白のままにします
スペースを適切に使用すると、コードの可読性を効果的に向上させることができます
1)スペースを使用するための一般的なルール
-
演算子、コロンの前後にスペースが必要です。
-
カンマ、セミコロンの後にスペースが必要です
#good $ bit = $ bitStart + $ bitEnd; case'someStr ':mysqlConnection($ config、$ dbname); if($ count> 9)#bad $ bit = $ bitStart + $ bitEnd; case'someStr':mysqlConnection($ config、$ dbname); if($ count> 9)
2)論理単位は空白行で区切る必要があります
function drawCapture(){$ chars = getChars(5); // imageCreate $ img = imageCreate(); // output imageoutputImage();}
2.制御プロセス
1)for、while、ifステートメントの形式は次のとおりです。
#forfor(init; condition; update){// ...}#whilewhile(condition){// ...}#ifif(condition){// ...} else if(condition){//。。 。 } そうしないと {// ... }
2)ループ/条件文は '('、 ')'でネストする必要があります
#goodif($ i> 0){$ val ++;} for($ i = 0; $ i <$ size; $ i ++){$ val ++;}#bad for($ i = 0; $ i < $ size; $ i ++)$ val ++; if($ i> 0)$ val ++;
3)一時変数を使用して、複合条件ステートメントを回避します
#good $ itemValid = $ itemMoney> 800 && $ level> 3 && $ valid> 0; if($ itemValid && isReady()){display();}#badif($ itemMoney> 800 && $ level> 3 && $ valid > 0 && isReady()){display();}
4)Switchesステートメントは次の形式を使用する必要があり、各ブランチには明確にコメントする必要があります
switch(condition){case 0:// showsomethingbreak; default://これはコードです}
3.ステートメント
1)クラス/インターフェース宣言の順序
クラスドキュメント内のステートメントの順序。
1.ドキュメント/コメント2.クラス/インターフェイスステートメント3.定数4.静的変数の順序:[public、protected、(default)、private] 5.インスタンス変数の順序:[public、protected、(default)、private] 6。コンストラクター__construct(); 7。関数関数;
2)変数の宣言は、変数が使用される場所ではなく、コードブロックの先頭に配置する必要があります。
public function method(){$ value = 0; ... for(...){$ value + = $ num;}}
4.スキル
ファイルの終わりを削除しますか?>
phpファイルの一般的なタグは<?phpで始まり、?>で終わります。ただし、Zend Frameworkでは、phpファイルの最後に?>を追加することはお勧めしません。これは
、<?php?>以外の文字はWebページに出力され、その中の文字は出力されないためです。したがって、最後に?>を追加しないと、悪意を持って追加された文字によってPHPファイルがWebページに出力されるのを防ぐことができます。
配列キー
PHPでは、配列のキー名として一重引用符のない文字列を使用することは合法ですが、これは望ましくありません。混乱を避けるために、キー名は常に一重引用符で囲む必要があります。これは文字列であり、キー名として変数を使用する
//間違った$ foo = $ assoc_array [blah]; //正しい$ foo = $ assoc_array ['blah']; //間違った$ foo = $ assoc_array ["$ var"]; //正しい$ foo = $ assoc_array [ $ var];
初期化されていない変数を使用しないでください
//間違っているif($ forum)... //正しいif(isset($ forum))... //正しいif(isset($ forum)&& $ forum == 5)
大きな配列でin_array()を使用しないでください
大きな配列でin_array()を使用することは避け、ループ内に200を超える要素を含む配列でこの関数を使用することは避けてください。in_array()はリソースを消費します。小さな配列の場合、影響は小さいかもしれませんが、ループには数秒かかる場合があります。この機能が本当に必要な場合は、isset()を使用して配列要素を見つけてください。実際には、キー名を使用してキー値をクエリします。呼び出し isset($array[$var])
は in_array($var, array_keys($array))
はるかに高速になります。
SQLスクリプト形式
SQLコードは非常に長くなることが多く、特定の形式を指定しないと読みにくくなります。SQLコードは通常、キーワードをラップして次の形式で記述されます。
$ sql = 'SELECT * <-1つのタブ-> FROM'。SOME_TABLE。'<-1つのタブ-> WHERE a = 1 <-2つのタブ-> AND(b = 2 <-3つのタブ->またはb = 3)<-1つのタブ-> ORDER BY b';
タブが適用された例を次に示します。
$ sql = 'SELECT * FROM'。SOME_TABLE。'WHERE a = 1 AND(b = 2 OR b = 3)ORDER BY b';
1文字で始まる変数の使用を禁止する
$ tKey、$ tVal
5.空白行の使用
-
<?phpの後に空白行が必要です
-
2つの関数の間には空白行が必要です。
-
return、die、exitの前に他のステートメントがある場合は、空白行を追加します
3.ドキュメントとメモ
1. PHPDoc
PHPDocは、JavadocのPHPバージョンです。これは、PHPコードにコメントするための公式標準です。phpDocumentorなどの外部ドキュメントジェネレーターによるAPIドキュメントの生成をサポートします。また、Zend Studio、NetBeans、ActiveState Komodo Edit、IDE、Aptana Studioなどの統合開発環境で、弱い型の言語の変数型やその他のあいまいさを理解するのにも役立ちます。改善されたコード補完、タイプヒント、およびデバッグ機能を提供します。
参照アドレス: http://zh.wikipedia.org/zh/PH ...
2.注意事項
アノテーションクラス
/ ***これは特定のクラスの紹介です* / class SomeClass {}
ローカル変数に注釈を付ける
function someFunction(){var $ result; //取得した結果セットvar $ searchResult; //取得した検索結果セット// ...}
注釈変数
/ ** @var name string * / public $ name
注釈関数
注釈は次の順序でマークする必要があります
* @param * @return * @see
3.PHPドキュメントヘッダーコメント
/ ***ファイルヘッダーの説明** @author Mark([email protected])* @copyright Copyright(c)2014-2016サワーレモンチーム* /
一般的に使用される命名のフレームワーク
コントローラ方式
getIndex()#list getCreate()#create postCreate()#保存して作成getEdit()#編集postEdit()#保存編集postUpdate()#バッチ更新postDelete()#ごみ箱に削除postDestroy()#完全に削除
付録
付録A:リファレンスドキュメント
-
PHPBBコーディング標準
http://www.phpbbchina.com/wik ...コーディング標準 -
Typecho PHPコーディング標準https://code.google.com/p/typ
... -
コードを書く過程でPHPを最適化する
http://www.yeeyan.org/article ...
付録B:PHPDocタグリファレンス
オンラインバージョンアドレス: http://manual.phpdoc.org/HTML ...
@abstract抽象クラス、クラス変数、またはメソッドを文書化します。@ access public、private、またはprotected要素のアクセス制御を文書化します。@access privateは、要素のドキュメント化が防止されることを示します。@ author author name <author @email>現在の要素の作成者をドキュメント化します。@ categoryドキュメント化された要素のパッケージを整理するカテゴリを指定します@copyrightnamedateドキュメントの著作権情報。@ deprecated version非推奨としてメソッドを文書化します。@ example / path / to / example外部に保存されたサンプルファイルの場所を文書化します。@ exceptionはメソッドによってスローされた例外を文書化します— @ throws。@ global type $ globalvarnameも参照してください。グローバル変数または関数またはメソッドでの使用。@ignore高度な開発者向けのelement @ internalプライベート情報の文書化を防止します@linkURL @nameグローバル変数名変数のエイリアスを指定します。たとえば、$ GLOBALS ['myvariable']は$ myvariable @ magicphpDocumentorタグになります}-。@パッケージのパッケージ名関連するクラスと関数のグループをドキュメント化します。@ paramtype [$ varname] description @return typedescriptionこのタグはvoid戻り値の型で定義されたコンストラクターまたはメソッドには使用されません。@ see別のメソッドまたはクラスへの関連付けを文書化します。@ version以降メソッドがクラスに追加されたときを文書化します。@ static静的クラスまたはmethod @ staticvarを文書化します。関数またはclass @ subpackage @ throwsでの静的変数の使用メソッドによってスローされた例外を文書化します。
付録C:バージョンの変更
v1.4(2016年10月7日)
マークダウン形式に変更し、Laravelエンコード形式に置き換えます
V1.3(2015年4月19日)
プロジェクトファイル構造の説明
V1.2(2013年4月27日)
プロジェクトの公共部分の分離
V1.1(2013年4月2日)
左フォーマットのコンテンツを
追加削除?>
マークを追加
V1.0(2012年11月7日)
初期化仕様