アプリケーション層内でマスター/スレーブスイッチを実行する必要があるアプリケーションを作成しています。現在のように、マッパーの作成時にZend_Db_Tableオブジェクトをインスタンス化し、次にsetDefaultAdapterをスレーブに設定します。
これで、ベースマッパークラス内に、次のメソッドがあります。
public function useWriteAdapter()
{
if(Zend_Db_Table_Abstract::getDefaultAdapter() != $this->_writeDb)
{
Zend_Db_Table_Abstract::setDefaultAdapter($this->_writeDb);
$this->_tableGateway = new Zend_Db_Table($this->_tableName);
}
}
これについては健全性チェックが必要です。オーバーヘッドはそれほど多くないと思います。もっと良い方法があるに違いないと思います。