概要
これまでState APIを使ったことがなかったです。
どういうものかすら知らなかったので、メモとして残します。
本題
ドキュメントを見てから、どこに保存されていか調べると、
State APIはテーブル「key_value」に保存され、Config APIの「config」テーブルとテーブルの構造も似ています。
ここまで分かった段階でそれぞれの使い分けが分からなくなりました。
Drupalの質問サイトでも同じように悩んでいる方がいましたので、紹介します。
自分の解釈
Config API
Drushなどから、設定情報をエクスポートやインポートできる機能がある。
そのため、テストサイトから本番サイトへの設定情報の同期する必要があるデータを保存する。(コンテンツタイプの設定など)
State API
エクスポートやインポート機能はない。
サイト固有のデータを保存する。
例えば、ある条件の場合の、モジュールの実行した時間など。
同期する必要がない情報を保存する。
一部の環境でだけ、設定値を同期させたくない場合
ここで悩んだのが、本番とテスト環境で違う値を使用するケースです。
例えば、EC-CUBEを例に挙げると、多くの決済代行業者を決済プラグインを出していますが、開発時と本運用時で設定項目が別で、あったります。(ダミーのクレジットのテストなど)
そういったケースの場合は、この流れからいうと「State API」を使うのが良いのかなと思いますが、サイトの状態かというと微妙な気がしました。
その場合は、コントリビュートモジュールの「Configuration Split」を使うと解決できると思いました。
一部だけは、Config APIのデータを同期させないなどを設定が、できるモジュールのようです。
まだ使ったことはありませんが、便利そうなモジュールなので、使いこなせれば、開発時に威力を発揮しそうです。