拡張APIダイジェスト
2017年10月 開発進捗説明会
概要
EC-CUBE3.1.0-alpha2以降、拡張性を向上するための多くの修正が取り込
まれました
• DependencyInjection
• Entity拡張機能
• PurchaseFlow
• Entityコンバーター
• アノテーション
• スキーマ定義の見直し
• 設定ファイルの見直し
• 物理削除の見直し
• 多通貨
• 例外処理の見直し
DependencyInjection
これまでServiceProvicderで明示的に定義する必要があった、
DIの定義を自動で行えるようになりました。
大半の定義が不要になり、規約ベースおよび後述の「アノテー
ション」で直感的に定義することができます。
設定ミスの起こりやすさ面倒な定義が不要になります。
DependencyInjection
#2460 コンテナへの登録/注入の自動化
#2463 コンテナへの登録/注入の自動化の全体適用
#2484 BaseInfo の Inject
#2516 コンポーネント自動登録まわりのリファクタリング
#2517 [CoC] @QueryExtensionの自動登録
#2518 [CoC]Entityイベントハンドラーの自動登録
#2521 CoCをプラグインにも適用するように変更
#2525 プラグイン設定の規約化
#2555 DI関連のクラス名を変更
巨大なEccubeServiceProvider無くなるよ!
Annotation
LaravelやSymfonyでも提供されている「アノテーション」での設定が
可能になりました。
ルーティングやテンプレート、レポジトリやFormTypeの定義を、
ServiceProviderを作成しなくても定義可能です。
ControllerProdvierやServiceProviderで設定していたものが不要になり、
設定と実装の関連がわかりやすくなりました。
Annotation
#2427 エンティティ拡張機構をアノテーションで定義するように修正
#2451 FormType の @Inject アノテーションに対応
#2453 Repository の @Component アノテーションに対応
#2457 @Repository アノテーションの実装
#2470 コントローラのアノテーション対応
#2519 @ForwardOnly アノテーション追加
#2532 コントローラの @Component アノテーションを削除
#2535 ForwardOnlyListenerの修正エンティティ拡張機構をアノテーシ
ョンで定義するように修正
PurchaseFlow
受注の明細や集計を拡張しやすい設計に。
配送料・値引き・手数料を明細化し、サイトの運用によって異
なる計算ロジックを抽象化することで、柔軟に拡張できるよう
になりました。
離島の配送料を個別に適用したり、条件に応じた値引きを追加
するなどが簡単に実装できます。
PurchaseFlow
#2424 PurchaceFlowの実装
#2435 PurchaseFlowの修正
#2438 PurchaseFlowのエラーメッセージを正しく表示
物理削除の見直し
不必要な論理削除を削除し、データの整合性を担保できるように
見直しを行っています。
単純な「削除」ではなく、「有効・無効」などのステータスを精
査しています。
「廃盤になった商品」や、「退会した会員」など、これまで削除
フラグで表現していたデータはビジネス上意味のある概念として
定義し直しています。
物理削除の見直し
#2490 ステータス対応不要の物理削除対応
#2491 Delivery の物理削除対応
#2492 Categoryの物理削除対応
#2496 Memberの物理削除対応
#2499 Paymentの物理削除対応
#2500 ClassCategory の物理削除対応
#2501 Customerの物理削除対応
#2502 Orderの物理削除対応
#2503 Productの物理削除対応
#2506 ProductClassの物理削除対応
#2509 不要なdel_flgの削除
#2510 SoftDeleteFilterの廃止
#2512 SoftDeleteFilter及び論理削除の廃止
スキーマ定義の見直し
受注に関するERを見直しました。
受注 - 明細 - 配送が多対多の関係になります。
OrderDetailとShippimentItemの重複はなくなり解消され、
Order – OrderItem –Shippingの関係となります
値引きや配送料の明細化や、別送・同梱などの概念が扱えるよ
うになっています。
スキーマ定義の見直し
#2513 Shipping から DeliveryFee と DeliveryTime の外部参照制
約を削除
#2526 dtb / mtb テーブル名等の見直しの実装
#2529 OrderDetail の削除
#2539 ShippingからDeliveryFee, DeliveryTimeを削除
設定ファイルの見直し
設定ファイルがphpファイルで定義できよるようになり、yaml
ファイルのparseにともなうパフォーマンス上のボトルネックが
解消されています。
また、環境変数での上書きができるようになり、PaaS環境での
運用が行いやすくなっています。
設定ファイルの見直し
#2480 message.ja.yml を PHP ファイルに変更
#2494 設定ファイルをyamlからphpファイルに変更
#2533 configの整理/env対応
#2534 Acmeをconfigで変更できるように対応
#2550 .env対応
Entity拡張機能
#2437 Trait でクラス定数(っぽいもの)を追加する仕組み
#2531 プラグインのインストールに合わせてEntity拡張機能に
よるスキーマ更新を行う対応
#2546 プラグインのライフサイクルとエンティティProxy再生
成/スキーマ更新タイミングの調整
Converter
#2515 Entity コンバーターの実装
コードエディタ
#2450 Twigの文法チェックを行うバリデータを追加
#2452 コードエディタの実装
多通貨
#2431 通貨の切り替え機構を追加
例外処理の見直し
#2522 Repositoryの例外処理の見直し
thanks.

201710_EC-CUBE 開発進捗説明会:拡張APIダイジェスト