nazolabo

フリーランスのWebエンジニアが近況や思ったことを発信しています。

EthnaでAction→Viewへの移動時にDB接続を切るFilter

ViewでDBアクセスが入るのってMVC的に間違ってる気がしなくもないけど、templateで表示する内容はViewで取得したほうが何かと便利(複数のActionClassから1つのViewを表示する場合とか)なので、
例えばAction"A"では$this->backend->getDBしてるけど、Action"B"ではDBは使っていなくて、でもその両方で使うViewではgetDBする場合、AのほうはShutdownしておかないと駄目っぽいので、
FilterのpostActionFilterで

$this->ctl->getBackend()->shutdownDB();

としてみる。
設計的に間違ってるってツッコミが飛んできそうだけど(あと2回接続することになるので無駄)、これはこれで便利。
----
ここまで書いておいてあれだけど、Ethna_Backend.phpで

if (isset($this->db_list[$db_varname])) {
  return $this->db_list[$db_varname];
}

でいい気がしてきた。
----
ってかCVS版では既にこうなってるというオチ。