Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【あじわう EC-CUBE 2系】~ Laravel との徹底比較 ~

Avatar for ranoooooooooooo ranoooooooooooo
December 03, 2025
16

【あじわう EC-CUBE 2系】~ Laravel との徹底比較 ~

Avatar for ranoooooooooooo

ranoooooooooooo

December 03, 2025
Tweet

Transcript

  1. あじわう EC-CUBE 2系 ~ Laravel との徹底比較 ~ 2025.08.29 株式会社アドシード 平野

    雄己 EC-CUBEは株式会社イーシーキューブの商標です
  2. • 国産ECオープンソースの トップランナー • 日本で一番選ばれている ECオープンソース • スモールスタートから大規模 ECまで、個人・企業を問わず、 あらゆる業種で利用

    • その圧倒的な実力は、様々な数字が物語っている ※ 公式サイトより EC-CUBE とは? EC-CUBEは株式会社イーシーキューブの商標です
  3. • バージョンは EC-CUBE 2.17.2-p2 • 言語: PHP(2系はPHP5時代の設計) • FW: 独自フレームワーク

    ◦ 4系だと Symfony 寄り • テンプレート : Smarty(2系) EC-CUBE スタック
  4. • Controller = LC_Page_* • View = Smarty • Model

    = ない(= SC_Query直 or Helper) • ルーティング = ない EC-CUBE 2 MVCで例えると
  5. • Laravel: public/index.php→routes/web.php→Controller • EC-CUBE2: html/ 配下の *.php がエントリ ◦

    いわゆるフロントコントローラはなく、 html/*.php が各ページのエントリ ◦ 例:/products/detail.php で商品詳細 ◦ → Controller相当は LC_Page_Products_Detail が担う ◦ URL直叩き的な! 1) エントリポイント/ルーティング
  6. • Laravel: app/Http/Controllers/* • EC-CUBE2: data/class/pages/**/LC_Page_* ◦ 例:LC_Page_Products_Detail(商品詳細) ◦ 拡張は

    class_extends/page_extends/LC_Page_*_Ex.php に置く(コア改変しない流儀) ◦ 各ページごとに、対応するコントローラ! 2) コントローラ層( Controller)
  7. • Laravel: FormRequest / Validator • EC-CUBE2: SC_FormParam(定義・整形)+ SC_CheckError(検証) ◦

    SC_FormParam が input 定義・型/桁整形 ◦ SC_CheckError がルール検証(必須、数値、メール等) 3) リクエスト /バリデーション
  8. • Laravel: Eloquent/Query Builder(User::query()->where(...)->get()) • EC-CUBE2: SC_Query(独自ラッパ) ◦ トランザクション: $objQuery->begin()

    / commit() / rollback() ◦ ORMはないので JOIN/集計も手書き(または Helper に委譲) ◦ Eloquent ない!SQL手書き! 4) DBアクセス( Eloquent/QueryBuilder)
  9. • Laravel: resources/views/*.blade.php(return view('x', $vars)) • EC-CUBE2: Smarty .tpl ◦

    テンプレパス: ▪ PC:data/Smarty/templates/default/ or html/user_data/packages/default/ ▪ SP:data/Smarty/templates/sphone/ or html/user_data/packages/sphone/ ◦ コントローラ →ビュー変数受け渡し: $this->tpl_xxx に詰める ◦ コンパイルキャッシュ: data/Smarty/templates_c/(Laravelで言う storage/framework/views) 5) ビュー(Blade)
  10. • Laravel は以下を明確に分ける文化 ◦ 「サービス = ビジネスロジック」 ◦ 「ヘルパー =

    汎用便利関数」 • EC-CUBE2 は「Helper = ビジネスロジッククラス 」という位置づけ ◦ だから SC_Helper_* は Serviceクラスに近い ◦ 汎用関数的な役割は SC_Utils に集約されている 7) サービスクラス/ヘルパークラス
  11. • Laravel の場合 ◦ サービスクラス (Service / Domain Service) ▪

    → ビジネスロジックを担当(例 : 注文処理、決済処理) ▪ → Controllerはなるべく薄く、ここに業務ルールを寄せる ◦ ヘルパークラス (Helper / Util) ▪ → 日付フォーマット、文字列操作、共通のちょっとした便利関数 ▪ → ビジネスロジックではなく「横断的な小物」 7-1) サービスクラス/ヘルパークラス
  12. • EC-CUBE2 の場合 ◦ SC_Helper_ 系* ▪ → 「業務ロジックをまとめる場所」として使われる ▪

    SC_Helper_Purchase : 購入処理の業務ロジック(受注作成、在庫引当、ポイント計算 …) ▪ SC_Helper_Customer : 会員情報の扱い(登録、認証、更新 …) ▪ SC_Helper_DB : DBに関わる共通処理(テーブル存在確認とかマスタ取得) ◦ 小物的な共通関数 ▪ → こっちは SC_Utils(ユーティリティクラス)や関数系に入る ▪ → 文字列整形、日付変換、バリデーション補助など。 ▪ つまり Laravel でいう「ヘルパー」に近いのは SC_Utils の方。 7-2) サービスクラス/ヘルパークラス
  13. • Laravel: .env + config/*.php • EC-CUBE2: data/config/config.php(DB等)+ data/cache/mtb_constants.php(定数) ◦

    mtb_constants.php は mtb_constants_init.php から生成( Laravelの config/*.php 的な) 9) 設定/環境変数
  14. • Laravel: app/Http/Middleware/*, Container, ServiceProvider • EC-CUBE2: 基本なし。 ◦ 共通前処理は

    LC_Page::init()/process() や 共通ヘルパで吸収。 ◦ DIは使わず スタティック /シングルトン が基本。 10) ミドルウェア /DI/ServiceProvider
  15. • Laravel: Events/Listeners、Package • EC-CUBE2: プラグイン機構( SC_Helper_Plugin のフックポイント)+ *_Ex 差し替え

    ◦ 例:LC_Page_*_action_before などのフックに処理を挿す 11) イベント/リスナー・拡張
  16. • Laravel: Artisan / Queue / Job • EC-CUBE2: 標準はなし。独自

    CLIやバッチPHPを php で叩く運用が一般的 14) コンソール /ジョブ/キュー