EC-CUBE 2系
EC-CUBE標準規約
by TheVOS posted Sep 28, 2019
원문출처 | http://svn.ec-cube.net/open_trac/wiki/EC...F%E7%B4%84 |
---|
基本的に Zend Framework PHP 標準コーディング規約 に順ずる.
以下, 要点及び相違点を規定する.
また, コーディングに際して, 以下のガイドラインに沿うことが望ましい
PHPUnitを利用した単体テストを行う際は以下のガイドラインに沿う事が望ましい
命名規約
ファイル名
- 拡張子は, 各ファイル形式に準ずる.
- 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」を省略できない。
- クラス名: LC_*
- 名称が複数の単語からなる場合, それぞれの単語の先頭を大文字にする.
- 関数名は, 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: 上記に該当しないもの。上記の複数に該当するもの。
- *_URL: URL
DBテーブル名
- テーブル名の先頭には, 小文字でその種類を表す Prefix を付加する.
- 区切り文字としてアンダースコア(_)を使用する.
-
Prefix 種類 例 mtb マスタデータ mtb_pref dtb データテーブル dtb_order_detail
DBカラム名
- 特に指定の無い限り, すべて小文字を使用する.
- 区切り文字としてアンダースコア(_)を使用する.
CSS クラス名
- 特に定義なし
コーディング規約
HTML
- ラジオボタン, チェックボックスは <label></label> で囲み, 文字をクリックしてもチェックされるようにする.
PHPコード
- 改行コードは, 基本的に LF を使用する.
- 使用する Subversion クライアントによっては, svn add を実行した際に, OS 元来の改行コードがリポジトリに反映されてしまう場合があるため, svn propset で svn:eol-style=LF を設定しておくのが望ましい.
- PHPコードの開始タグと, 終了タグは以下のように記述する.
- 終了タグの後に必ず LF (UNIX の改行コード)を1つ入れる.
- 余分な空行, 行末の空白は極力削除する.
- Eclipse でコーディングする場合, AnyEdit プラグイン を使用すると自動的にやってくれる
- クラス定義, 関数定義の後, 括弧の後で改行する.
- 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'; break; }
- case の記述は, 定数を用いるのが望ましい.
文字列
- 長くなる文字列は分割し, "." で結合する.
<?php $sql = 'SELECT name, age, birthday, zipcode, address, comment ' . ' FROM user_information ' . ' WHERE user_id = ? ' . ' AND is_delete = 0 ';
- ヒアドキュメントを使用しても良い
<?php $sql = <<< __EOS__ SELECT name, age, birthday, zipcode, address, comment FROM user_information WHERE user_id = ? AND is_delete = 0 __EOS__;
SQL文
- フォームから入力された値を利用して SQL文を生成する場合, SQLインジェクションを防ぐため, 必ず PEAR::MDB2 のブレースホルダを利用する.
コメント
- コメントのコーディングは基本的に phpDocumentor に準ずる.
ヘッダ
- 各ファイルのヘッダに著作権表記を記述する.
<?php /* * This file is part of EC-CUBE * * Copyright(c) 2000-2011 LOCKON CO.,LTD. All Rights Reserved. * * http://www.lockon.co.jp/ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
クラス定義
- phpDoc コメントは必要に応じて記述する.
- @version は $Id$ を使用する.
- enable-auto-props を有効 にし, svn:keywords で *.php = svn:keywords=Id とすることで自動展開される.
- メンバ変数は / */ を使用することによって phpDoc コメントとして認識される.
<?php /** * クラスの簡単な説明 * * クラスの詳細な説明.... * ... * * @package Page * @author LOCKON CO.,LTD. * @version $Id$ */ class LC_Page { /** メンバ変数 */ var foo; }
Pageクラス
- class/pages以下において exit; を個別の処理でしない。exit処理はすべてSC_Response_Ex::actionExit(); に共通化すること.
関数定義
- phpDoc コメントは必要に応じて記述する.
- @param と @return は必須
- コード文中にも必要に応じて的確なコメントを記述する.
<?php /** * 関数の簡単な説明. * * 関数の詳細な説明.... * .... * * @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 も記述する. */
- コメントによってソースコードが見難くならないように注意する.
-
管理機能一覧
管理機能一覧
○:標準搭載機能。要件によって個別のカスタマイズが必要な可能性があります。PLG:プラグインにて対応可能です。 分類♯機能説明3系4系A:認証機能1パスワード認証管理者登録したユーザでのID/パスワードによるログイン。○○2管理者登録複数の管理者の登録が行...Date2020.11.12 CategoryEC-CUBE 4系 Views30 -
フロント機能一覧
フロント機能一覧
○:標準搭載機能。要件によって個別のカスタマイズが必要な可能性があります。PLG:プラグインにて対応可能です。 分類♯機能説明3系4系A:商品紹介1商品一覧ページ登録商品をカテゴリごとに一覧表示します。○○2商品サムネイル表示一覧ページで商品がサムネイル...Date2020.11.12 CategoryEC-CUBE 4系 Views33 -
EC-CUBE 2系でポート番号付で管理画面を動かす
EC-CUBE 2系でポート番号付で管理画面を動かす
Apacheの処理分散させるために、ロードバランサーを介してラウンドロビンを掛けた複数台で同じEC-CUBEを動かす必要が出てきました。Apacheを動作させるフロントエンドをコピーした複数台でPHP処理を分担、MySQLはローカル接続されているバックエンドの専用サー...Date2020.01.02 CategoryEC-CUBE 2系 Views63 -
EC-CUBE 2系で注文を受けた商品の規格を後で削除すると、管理画面で受注内容を編集できなくなる
EC-CUBE 2系で注文を受けた商品の規格を後で削除すると、管理画面で受注内容を編集できなくなる
注文された規格を削除して、dtb_products_classテーブルから該当する規格データが無くなると、受注内容のたとえば発送先住所などを編集しようとしても数量の上限チェックに引っかかりエラーが出て受注内容の変更ができなくなってしまいます。 ※ この現象は、規...Date2020.01.02 CategoryEC-CUBE 2系 Views135 -
EC-CUBE 2系でShift_JISに存在しない文字が含まれた受注データがあると、その受注内容が受注CSVからまるごと欠落する
EC-CUBE 2系でShift_JISに存在しない文字が含まれた受注データがあると、その受注内容が受注CSVからまるごと欠落する
受注データの備考などにお客様が入力した文章にShift_JISで表現できない文字や記号がまざっていると、受注CSVをダウンロードしたときにその受注データがそっくり欠落してしまいます。 これはCSVデータをShift_JISに変換するときのiconvのパラメータがデフォル...Date2020.01.02 CategoryEC-CUBE 2系 Views89 -
EC-CUBE 2系で商品情報をCSVで更新するとき関連商品情報が削除される
EC-CUBE 2系で商品情報をCSVで更新するとき関連商品情報が削除される
CSVアップロードして商品データを更新する事ができるのですが、そのCSVに「関連商品」の列が無いと、CSVをアップロードしたときにその商品に今まで登録されていた関連商品の内容が全て削除されてしまいます。 これは、CSVアップロード処理が「関連商品」に関す...Date2020.01.02 CategoryEC-CUBE 2系 Views104 -
EC-CUBE 2系で商品を沢山購入すると住所情報が欠落する
EC-CUBE 2系で商品を沢山購入すると住所情報が欠落する
以外と有名な問題なのですが、カートに沢山の商品を入れて注文すると、受注メールは送信されてエラーも出ないのに「送料がゼロ円になる」とか「管理画面に受注データが表示されない」という障害が起きます。 これは、セッション情報を保存するDBテーブルが tex...Date2020.01.02 CategoryEC-CUBE 2系 Views84 -
EC-CUBE 2系の「もっと見る」を簡潔に
EC-CUBE 2系の「もっと見る」を簡潔に
今更ながら、EC-CUBE 2系のスマホ版のデザイン変更で苦労しました。 EC-CUBEに組み込まれている「もっと見る」ボタンですが、Ajaxで次ページのjsonデータを取得してきて画像、商品名、価格等のspanやimgタグの中身を1個ずつコピーしている。。。(3系でも同じ...Date2020.01.02 CategoryEC-CUBE 2系 Views624 -
EC-CUBEをインストールする
EC-CUBEを利用することになりそうなので、ひとまずEC-CUBEをレンタルサーバーにインストールしてみました。その手順備忘録です。 EC-CUBEインストール手順 EC-CUBEをダウンロードする EC-CUBEのファイルを配置する データベースを作る EC-CUBEをインストールす...Date2019.12.10 CategoryEC-CUBE 2系 Views95 -
EC-CUBE2.13カスタマイズ:新しいページを追加する
EC-CUBEで新しいページを追加する方法として、管理画面で追加して、そのページのURLを任意に変更する手順をメモ。 管理画面からページを追加する管理画面でデザイン管理>PC>ページ詳細設定を開き、必要事項を入力して登録するボタンを押下。※スマホ、モバイ...Date2019.11.11 CategoryEC-CUBE 2系 Views636 -
관리 화면의 사이드 메뉴에 항목 추가하는 방법
EC-CUBE3에서는 관리 화면의 사이드 메뉴에 쉽게 메뉴를 추가 할 수 있습니다. 외형 수정이므로 템플릿 (twig)를 편집 ...라고 생각했는데, 수정할 필요가있는 것은 ServiceProvider입니다.실제로 ServiceProvider에서하지 않아도 좋다고 생각 합니다만,로드 ...Date2019.11.11 CategoryEC-CUBE 3系 Views165 -
イベントセット販売プラグインマニュアル
イベントセット販売プラグインマニュアル | THEVOS作成日:2019年 10月 29日 火曜日 24時間/365日技術サポート: あなたが直面している問題を教えてください。 イベントセット販売プラグインをお買い上げいただきありがとうございます。このユーザーマニュアル...Date2019.11.07 CategoryEC-CUBE 2系 Views131 -
EC-CUBE4 계에서 관리 화면에 새 메뉴 항목을 추가하는 방법
이번에는 제품 관리의 하단에 새 메뉴 항목을 추가하는 것을 생각합니다.우선 메뉴에서 열 페이지가 필요하므로 컨트롤러를 만들고 새 페이지를 만든 후 해당 페이지를 메뉴에 추가하자. 이번에는 eccube_nav.yaml를 편집하는 가장 간단한 방법을 소개합니다. ...Date2019.10.28 CategoryEC-CUBE 4系 Views495 -
2.13系 ソフトウェア要件
2.13系 ソフトウェア要件
分類 ソフトウェア 動作確認済み WEBサーバ IIS 7.0~ Apache 2.0.x~ 2.2.x~ 言語 PHP 5.2~ データベース PostgreSQL 8.1.4~ 9.x~ MySQL 5.0.x~ 必須PHPライブラリ pgsql / mysql gd freetype2 mbstring zlib ctype spl (PHP 5.3.0 未満の場合) session ...Date2019.10.11 CategoryEC-CUBE 2系 Views56 -
ECCUBE 2.13のインストール方法をスクリーンショット付きでわかりやすく徹底解説!
「EC-CUBE」とは、ECサイトに必要なカート機能や決済機能がパッケージ化されている、無料のツールです。ECサイトを運営したことがある人なら、きっと知っている人も多いはず。あとはWebサーバーさえあれば、わりと簡単にECサイトを立ち上げることができます。...Date2019.10.10 CategoryEC-CUBE 2系 Views131 -
EC-CUBE2.12 運用マニュアル
EC-CUBE ver2120 2121 2122 運用マニュアル1 Page EC-CUBE Ver2120 Ver2121 Ver2122 運用マニュアル 2012年11月28日 Thi s document is licensed under a Creative Commons 表示 - 継承 2 1 日本 License THEVOS ECO LAB Inc EC-CUBE ver2120 2121 212...Date2019.09.29 CategoryEC-CUBE 운용 설명서 Views62 -
単体テストガイドライン
単体テストガイドライン
本ガイドラインはEC-CUBEの単体テストをPHPUnitを使って行う上でのガイドラインを株式会社SHIFT様(http://www.shiftinc.jp/)のご協力によりまとめたものとなります。 各クラス共通のガイドライン1. テストを含めたフォルダ構成テストコードを含んだフォルダ構...Date2019.09.28 CategoryEC-CUBE 2系 Views86 -
リファクタリングガイドライン
リファクタリングガイドライン
init 関数init 関数は, クラスの初期化を目的する. ビジネスロジックの記述はしないこと <?php function init() { /** * NG ビジネスロジックの記述はしない */ if (count($this->arrPayment) > 0) { $i = 0; foreach ($this->arrPayment as $val) { $this->pa...Date2019.09.28 CategoryEC-CUBE 2系 Views153 -
EC-CUBE標準規約
EC-CUBE標準規約
基本的に Zend Framework PHP 標準コーディング規約 に順ずる.以下, 要点及び相違点を規定する. また, コーディングに際して, 以下のガイドラインに沿うことが望ましい EC-CUBE標準規約 > リファクタリングガイドライン PHPUnitを利用した単体テストを行う際は...Date2019.09.28 CategoryEC-CUBE 2系 Views154 -
메일 사용자 설명서
메일 사용자 설명서
원 포인트 가이드메일 소프트에 다음 정보를 설정하십시오. 메일 서버 (POP)sv11.star.ne.jp메일 서버 (SMTP)sv11.star.ne.jp계정 (사용자 이름)만든 계정 이름 (@이후도 포함)비밀번호설정 한 패스워드Date2019.03.29 Category메일 서비스 Views63
Facebook [ko]댓글