バージョンアップに備えたEC-CUBE開発手法

[9,960 views]

PAK58_MBAkatakata

独自のカスタマイズを盛り込んだECサイトを展開したいショップオーナー様にとって
EC-CUBEは非常に魅力的なツールですが、気をつけなくてはいけないのが、
セキュリティホールが見つかった場合やバージョンアップ時の対応です。

EC-CUBEのプログラムソースに手を加えてしまったがために
セキュリティパッチの対応が難しくなってしまった。という方もいるかと思います。

システムカスタマイズの話になりますが、
今日はそんなモヤモヤを抱えてEC-CUBEを運用している方に【extends】の紹介をしたいと思います。

extendsとは

EC-CUBEには(というよりもPHPなどのオブジェクト指向プログラミング言語には)
extends(継承)という機能が備わっており、この仕組みを利用すると大元のプログラムソースを残したまま、
システムのカスタマイズをすることができます。

EC-CUBEでもこの仕組みを全体的に取り入れており、元のソースを改変することなく、
システムのカスタマイズが出来るようになっています。

どこにあるの?

EC-CUBEのプログラムが入っている「/data」ディレクトリを開くと
大元のプログラム一式が格納されている「class」ディレクトリがあり、
そのディレクトリと同じ階層に「class_extends」というディレクトリがあると思います。

このディレクトリ内には「class」に格納されているプログラム一式とそっくり同じ構成で、
ファイル名に「_Ex」という文字を付加したプログラム一式が格納されています。EC-CUBEのシステムカスタマイズを行う場合は、この「_Ex」ファイルに修正を加えるようにすると、
元のソースをそのまま残すことができ、セキュリティパッチやバージョンアップの対応時に
改変したソースの場所を容易に特定することが出来るようになります。

簡単な実例

大元のプログラムである「/data/class/pages/mypage/LC_Page_Mypage.php」ではなく
それを継承した「/data/class_extends/page_extends/mypage/LC_Page_Mypage_Ex.php」に
以下のような追記をします。

function init() {
 parent::init();                    // 大元のinit()を実行

 // フィーチャーホンの場合にのみ実行する処理
 if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_MOBILE) {
  $this->tpl_subtitle = 'フィーチャーホン専用ページです!';
 }
}

このように、追加するプログラムソースを分離できる仕組みにより、
自分で改変した部分も非常に分かりやすくなり、カスタマイズの仕様もプログラムソースから把握しやすくなります。

難点は追加するソースだけ継承ファイルに記述するために、直接大元のファイルを改変するよりも
時間がかかってしまうことですが、
今後、長い間そのシステムを運用していくのであれば、最初の段階でひと手間かけて
管理をしやすくしておくことは非常に大事な事だと思います。

以上、駆け足でしたが、EC-CUBEカスタマイズのちょっとしたテクニックをご紹介させて頂きました。

それでは、また。


このEC記事につけられたタグ