= EC-CUBE標準規約 = 基本的に [http://framework.zend.com/manual/ja/coding-standard.html Zend Framework PHP 標準コーディング規約] に順ずる.[[BR]] 以下, 要点及び相違点を規定する. また, コーディングに際して, 以下のガイドラインに沿うことが望ましい [wiki:EC-CUBE標準規約/リファクタリングガイドライン] PHPUnitを利用した単体テストを行う際は以下のガイドラインに沿う事が望ましい [wiki:EC-CUBE標準規約/単体テストガイドライン] == 命名規約 == === ファイル名 === * 拡張子は, 各ファイル形式に準ずる. * PHPファイルは, 必ず .php を使用する. * PHPクラスは, 特別な場合を除き, 1クラス1ファイルとし, '''クラス名.php''' とする. === PHPクラス名 === * 区切り文字としてはアンダースコア(_)を使用する. * クラス名称の先頭には, 大文字でその種類を表す Prefix を付加する. ||'''Prefix'''||'''種類'''||'''例'''|| ||SC, GC ||1つのサイト内で共有するクラス (他のクラスから呼ばれる)||SC_Customer.php|| ||LC ||1つのソースファイル内で使用するクラス (通常他のクラスから呼ばれない)||LC_Page_Abouts.php|| * クラスがパッケージに属する場合は, Prefix の後にパッケージ名を付加する. * Page パッケージでインデックスページとしてアクセスされるクラス名は Index とせず, 属する階層名をクラス名とする. * ユーザーが拡張するために extends するクラスは, クラス名の最後に Ex を付加する. === 関数名 === * 関数名の先頭には, 小文字でその種類を表す Prefix を付加する. * クラス名: LC_* * private または protected を意図する場合、Prefix「lf」を省略できる。(Prefix の付加がない場合、「lf」相当とみなす。) * public を意図する場合、Prefix「sf」を省略できない。 * クラス名: SC_*, GC_* * public を意図するメソッドの場合、Prefix「sf」を省略できる。(Prefix の付加がない場合、「sf」相当とみなす。) * private または protected を意図する場合、Prefix「lf」を省略できない。 * 名称が複数の単語からなる場合, それぞれの単語の先頭を大文字にする. * 関数名は, '''Prefix + 動詞 + 対象''' を原則とする. ||'''Prefix'''||'''種類'''||'''例'''|| ||sf ||一つのサイト内で共有する関数||sfGetProductName()|| ||lf ||一つのソースファイル内で使用する関数||lfGetProductName()|| ||fn ||!JavaScript で宣言された関数||fnGetProductName()|| === 変数名(Smarty 変数も含む) === * 変数名の先頭には, 小文字でその種類を表す Prefix を付加する. * ループ等で一時的に使用する, 数値型の変数には慣習的な $i, $j, $k を使用しても良い. * リテラルを格納する (つまり配列・オブジェクト以外の) 変数名は, すべて小文字を使用し, アンダーバーで区切る. * 配列・オブジェクトの変数名はキャメルケースを使用する. ||'''Prefix'''||'''種類'''||'''例'''|| ||obj ||クラス変数(オブジェクト)||$objQuery|| ||arr ||配列||$arrCustmers|| ||tpl ||テンプレート変数(リテラル)||$this->tpl_csv_id|| === 定数名 === * すべて大文字で宣言する. * 区切り文字としてアンダースコア(_)を使用する. * パスに関わるもの(パラメータを含む)は、下記を適用する。(#834 から展開) * *_URL: URL * 先頭は「''スキーム名'':」 * *_URLPATH: URL における url-path 相当 (絶対パス) * 先頭は「/」 * *_HTMLPATH: URL 上の EC-CUBE の /html/ からの相対パス * 先頭に「/」を含まない。(/html/ と同一の場合、空文字) * '''命名に改善余地あり。''' (参考: concrete5=DIR_REL) 現在は利用箇所が無いが、今後利用する必要も考えられるので再考していきたい。 * *_REALFILE: (サーバの)ファイルシステム上のファイルの絶対パス * 先頭は「/」 * *_REALDIR: (サーバの)ファイルシステム上のディレクトリの絶対パス * 先頭は「/」。末尾は「/」。 * *_DIR: 上記に該当しない断片的なディレクトリ情報。 * 先頭に「/」を含まない。 * *_FILE: 上記に該当しない断片的なファイル情報。 * *_PATH: 上記に該当しないもの。上記の複数に該当するもの。 === DBテーブル名 === * テーブル名の先頭には, 小文字でその種類を表す Prefix を付加する. * 区切り文字としてアンダースコア(_)を使用する. ||'''Prefix'''||'''種類'''||'''例'''|| ||mtb ||マスタデータ||mtb_pref|| ||dtb ||データテーブル||dtb_order_detail|| === DBカラム名 === * 特に指定の無い限り, すべて小文字を使用する. * 区切り文字としてアンダースコア(_)を使用する. === CSS クラス名 === * ''特に定義なし'' == コーディング規約 == === HTML === * ラジオボタン, チェックボックスは '''''' で囲み, 文字をクリックしてもチェックされるようにする. === PHPコード === * 改行コードは, 基本的に '''LF''' を使用する. * 使用する Subversion クライアントによっては, svn add を実行した際に, OS 元来の改行コードがリポジトリに反映されてしまう場合があるため, ''svn propset'' で '''svn:eol-style=LF''' を設定しておくのが望ましい. * PHPコードの開始タグと, 終了タグは以下のように記述する. * 終了タグの後に必ず '''LF''' (UNIX の改行コード)を1つ入れる. * 余分な空行, 行末の空白は極力削除する. * Eclipse でコーディングする場合, [http://andrei.gmxhome.de/anyedit/ AnyEdit プラグイン] を使用すると自動的にやってくれる * クラス定義, 関数定義の後, 括弧の後で改行する. * 80 文字を目安に改行する. {{{ #!php $val) { echo $key . ':' . $val . "\n"; } }}} * '''while 文''' {{{ #!php