[[TOC]] = EC-CUBE標準規約 = 基本的に [http://framework.zend.com/manual/ja/coding-standard.html Zend Framework PHP 標準コーディング規約] に順ずる.[[BR]] 以下, 要点及び相違点を規定する. == 命名規約 == === ファイル名 === * 拡張子は, 各ファイル形式に準ずる. * PHPファイルは, 必ず .php を使用する. * PHPクラスは, 特別な場合を除き, 1クラス1ファイルとし, '''クラス名.php''' とする. === PHPクラス名 === * 区切り文字としてはアンダースコア(_)を使用する. * クラス名称の先頭には, 大文字でその種類を表す Prefix を付加する. ||'''Prefix'''||'''種類'''||'''例'''|| ||GC ||全サイトで共有するクラス||GC_SendMail.php|| ||SC ||1つのサイト内で共有するクラス||SC_Customer.php|| ||LC ||1つのソースファイル内で使用するクラス||LC_Page_Abouts.php|| * クラスがパッケージに属する場合は, Prefix の後にパッケージ名を付加する. * Page パッケージでインデックスページとしてアクセスされるクラス名は Index とせず, 属する階層名をクラス名とする. * ユーザーが拡張するために extends するクラスは, クラス名の最後に Ex を付加する. === 関数名 === * 関数名の先頭には, 小文字でその種類を表す Prefix を付加する. * クラス名で種類が判別可能な場合はこの限りではない. * 名称が複数の単語からなる場合, それぞれの単語の先頭を大文字にする. * 関数名は, '''Prefix + 動詞 + 対象''' を原則とする. ||'''Prefix'''||'''種類'''||'''例'''|| ||gf ||全サイトで共有する関数||gfGetProductName()|| ||sf ||一つのサイト内で共有する関数||sfGetProductName()|| ||lf ||一つのソースファイル内で使用する関数||lfGetProductName()|| ||fn ||!JavaScript で宣言された関数||fnGetProductName()|| === 変数名(Smarty 変数も含む) === * 変数名の先頭には, 小文字でその種類を表す Prefix を付加する. * ループ等で一時的に使用する, 数値型の変数には慣習的な $i, $j, $k を使用しても良い. * 区切り文字としてアンダースコア(_)を使用する. ||'''Prefix'''||'''種類'''||'''例'''|| ||obj ||クラス変数(オブジェクト)||$objDb_Conn|| ||arr ||配列||$arrCustName|| === 定数名 === * すべて大文字で宣言する. * 区切り文字としてアンダースコア(_)を使用する. === DBテーブル名 === * テーブル名の先頭には, 小文字でその種類を表す Prefix を付加する. * 区切り文字としてアンダースコア(_)を使用する. ||'''Prefix'''||'''種類'''||'''例'''|| ||mtb ||マスタデータ||mtb_pref|| ||dtb ||データテーブル||dtb_shop|| ||vw ||ビュー ||lvw_order|| === DBカラム名 === * 特に指定の無い限り, すべて小文字を使用する. * 区切り文字としてアンダースコア(_)を使用する. === CSS クラス名 === * ''特に定義なし'' == コーディング規約 == === HTML === * ラジオボタン, チェックボックスは '''''' で囲み, 文字をクリックしてもチェックされるようにする. === PHPコード === * PHPコードの開始タグと, 終了タグは以下のように記述する. * 終了タグの後に必ず '''LF''' (UNIX の改行コード)を1つ入れる. * 余分な空行, 行末の空白は極力削除する. * Eclipse でコーディングする場合, [http://andrei.gmxhome.de/anyedit/ AnyEdit プラグイン] を使用すると自動的にやってくれる * クラス定義, 関数定義の後, 括弧の後で改行する. * 80 文字を目安に改行する. {{{ #!php }}} === 制御文 === * if, for, while, switch 等の制御構造は, 次のルールで開き括弧で記述する. * インデントは, 半角スペース4文字を使用し, タブは使用しない. * '''if 文''' {{{ #!php }}} * 判定文の対象となる処理結果は先に記述する. * '''for 文''' {{{ #!php }}} * '''foreach 文''' {{{ #!php $val) { echo $key . ":" . $val . "\n"; } ?> }}} * '''while 文''' {{{ #!php }}} * '''do while 文''' {{{ #!php }}} * '''switch 文''' {{{ #!php }}} * case の記述は, 定数を用いるのが望ましい. === 文字列 === * 長くなる文字列は分割し, "." で結合する. {{{ #!php }}} === SQL文 === * フォームから入力された値を利用して SQL文を生成する場合, SQLインジェクションを防ぐため, 必ず PearDB のブレースホルダを利用する. == コメント == * コメントのコーディングは基本的に [http://www.phpdoc.org/ phpDocumentor] に準ずる. === ヘッダ === * 各ファイルのヘッダに著作権表記を記述する. {{{ #!php }}} === クラス定義 === * phpDoc コメントは必要に応じて記述する. * '''@version''' は '''$Id$''' を使用する. * [http://subversion.bluegate.org/doc/ch07.html#svn.advanced.confarea.opts.config enable-auto-props を有効] にし, [http://subversion.bluegate.org/doc/ch07s02.html#svn.advanced.props.special.keywords svn:keywords] で '''*.php = svn:keywords=Id''' とすることで自動展開される. * メンバ変数は '''/** */''' を使用することによって phpDoc コメントとして認識される. {{{ #!php }}} === 関数定義 === * phpDoc コメントは必要に応じて記述する. * '''@param と @return は必須''' * コード文中にも必要に応じて的確なコメントを記述する. {{{ #!php }}} === その他 === * 必要に応じて, 下記のタスクタグを使用しても良い * '''TODO''' - TODO として残したいコメント * '''FIXME''' - 必ず修正することを促すコメント * '''XXX''' - 動くけど怪しい... {{{ #!php }}} * コメントによってソースコードが見難くならないように注意する.