wiki:EC-CUBE標準規約

Version 12 (modified by nanasess, 17 years ago) (diff)

改行コードに関する規約を追加

TOC

EC-CUBE標準規約

基本的に  Zend Framework PHP 標準コーディング規約 に順ずる.
以下, 要点及び相違点を規定する.

命名規約

ファイル名

  • 拡張子は, 各ファイル形式に準ずる.
    • 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

  • ラジオボタン, チェックボックスは <label></label> で囲み, 文字をクリックしてもチェックされるようにする.

PHPコード

  • 改行コードは, 基本的に LF を使用する.
    • 使用する Subversion クライアントによっては, svn add を実行した際に, OS 元来の改行コードがリポジトリに反映されてしまう場合があるため, svn propsetsvn:eol-style=LF を設定しておくのが望ましい.
  • PHPコードの開始タグと, 終了タグは以下のように記述する.
  • 終了タグの後に必ず LF (UNIX の改行コード)を1つ入れる.
  • 余分な空行, 行末の空白は極力削除する.
  • クラス定義, 関数定義の後, 括弧の後で改行する.
  • 80 文字を目安に改行する.
    <?php
    class LC_Page_Abouts {
    
        function process() {
            // some logic.
        }
    }
    ?>
    
    

制御文

  • if, for, while, switch 等の制御構造は, 次のルールで開き括弧で記述する.
  • インデントは, 半角スペース4文字を使用し, タブは使用しない.
  • if 文
    <?php
    if ($flag == '1') { // '1' == $flag と書くのは NG
        $ret = 1;
    } elseif ($flag == '2') {
        $ret = 2;
    } else {
        $ret = 3;
    }
    ?>
    
    
    • 判定文の対象となる処理結果は先に記述する.
  • for 文
    <?php
    for ($i = 0; $i < $max; $i++) {
        echo $i . "\n";
    }
    ?>
    
    
  • foreach 文
    <?php
    foreach ($var as $key => $val) {
        echo $key . ":" . $val . "\n";
    }
    ?>
    
    
  • while 文
    <?php
    while ($flag) {
        var_dump($flag);
    }
    ?>
    
    
  • do while 文
    <?php
    do {
        var_dump($flag);
    } while ($flag);
    ?>
    
    
  • switch 文
    <?php
    switch ($var) {
    case VAR_ONE:
        echo "one";
        break;
    
    case VAR_TWO:
        echo "two";
        break;
    
    default:
        echo "default":
    
    }
    ?>
    
    
    • case の記述は, 定数を用いるのが望ましい.

文字列

  • 長くなる文字列は分割し, "." で結合する.
    <?php
    $sql = "SELECT name, age, birthday, zipcode, address, comment "
         . "  FROM user_information "
         . " WHERE user_id = ? "
         . "   AND is_delete = 0 ";
    ?>
    
    

SQL文

  • フォームから入力された値を利用して SQL文を生成する場合, SQLインジェクションを防ぐため, 必ず PearDB のブレースホルダを利用する.

コメント

  • コメントのコーディングは基本的に  phpDocumentor に準ずる.

ヘッダ

  • 各ファイルのヘッダに著作権表記を記述する.
    <?php
    /*
     * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
     *
     * http://www.lockon.co.jp/
     */
    ?>
    
    

クラス定義

  • phpDoc コメントは必要に応じて記述する.
  • @version$Id$ を使用する.
  • メンバ変数は / */ を使用することによって phpDoc コメントとして認識される.
    <?php
    /**
     * クラスの簡単な説明
     *
     * クラスの詳細な説明....
     * ...
     *
     * @package Page
     * @author LOCKON CO.,LTD.
     * @version $Id$
     */
    class LC_Page {
    
        /** メンバ変数 */
        var foo;
    
    }
    ?>
    
    

関数定義

  • phpDoc コメントは必要に応じて記述する.
    • @param と @return は必須
  • コード文中にも必要に応じて的確なコメントを記述する.
    <?php
    
    // }}}
    // {{{ functions
    
    /**
     * 関数の簡単な説明.
     *
     * 関数の詳細な説明....
     * ....
     *
     * @access private
     * @param string $foo 引数の説明
     * @param string|integer $bar 引数の説明
     * @return string 返り値の説明
     */
    function process($foo, $bar = "") {
        // some process...
        return "string value";    
    }
    ?>
    
    

その他

  • 必要に応じて, 下記のタスクタグを使用しても良い
    • TODO - TODO として残したいコメント
    • FIXME - 必ず修正することを促すコメント
    • XXX - 動くけど怪しい...
      <?php
      
      // TODO リファクタリングすること.
      
      // FIXME 要修正. バグの説明(#135)
      
      /*
       * :XXX: 以下, 怪しいロジック(#999)
       * 複数行のコメントはこのように.
       *
       * 必要に応じて チケットの ID も記述する.
       */
      
      ?>
      
      
  • コメントによってソースコードが見難くならないように注意する.