EC-CUBE:フックポイントのタイプ別、呼ばれるタイミング
EC-CUBEにはプラグイン開発用にいくつかの処理割り込みポイント(フックポイント)が用意されていますが、それぞれが正確にはどのタイミングで呼ばれているかを把握しておくと、無駄な作業やミスを減らすことができます。
というわけで、個人的に調査した内容をシェアしようと思います。
フックポイントの種類とタイミング表
上に行くほど処理の最初に呼び出されます。
メソッド名 | フックポイント名/その他イベント | タイプ |
---|---|---|
init() | ディスプレイオブジェクト生成 | |
preProcess | スーパーフックポイント | |
トランザクショントークン処理 | ||
(フックポイント)_action_before | ローカルフックポイント | |
process() | なし | |
action() | SC_FormParam_construct | SC_FormParamフックポイント |
sendResponse() | (フックポイント)_action_after | ローカルフックポイント |
process | スーパーフックポイント | |
ビューへページオブジェクトを割り当て | ||
prefilterTransform | ||
レスポンス用HTMLの書き出し | ||
outputfilterTransform |
例外としてPHPのオートロード機能でSC_系のクラスを入れ替えることができる「loadClassFileChange」フックポイントがありますが、詳しくはプラグイン開発の仕様書に記載がありますので、ここでは省略します。
フォームのモード(mode)はいつでも取得できる?
Form要素に常に設定されている「mode」ですが、LC_Page_Exクラスを継承したページオブジェクトであれば、getMode()でいつでも取得できます。
というのも、この値はどこかのタイミングで格納されるものではなく、getMode()を実行することで常に「$_SERVER」の値から取得してきてくれるためです。
ただし、modeがいつでも取れるからといって「どのタイミングでもフォームのデータがページオブジェクトに格納されている」と勘違いしないように気をつけましょう。
2014-01-05