sfPropel13PluginでsfGuardPluginを使うと発生する問題

SQLite3を使いたかったのでPropel1.3もしくはDoctrineを選ぶことになったんだけど、やっぱりそうするとプラグイン関係でいろいろ問題でてくるよね。
とりあえず発生した問題をピックアップ。

http://trac.symfony-project.org/ticket/3380でもネタになってますね。 

saveとdelete

Propel1.3のPersistentインターフェースを見てみると

public function delete(PropelPDO $con = null); 

こうなっちゃってるんだよね…

でもPluginsfGuardUserPermission, PluginsfGuardUserGroup, PluginsfGuardUser の3クラスは

public function delete($con = null) 

こうなわけで

当然のごとく

Fatal error: Declaration of PluginsfGuardUser::delete() must be compatible with that of Persistent::delete() in ....

という感じで怒られてしまいます。

さて、解決策は…

  • 1.例の3クラスを書き換える
  • 2.propel.builder.object.class で、PropelPDOをコネクションに指定しないメソッドを書き出すようにする

とりあえずこの二つがぱっと思い浮かんだんだけど、どうしたものか…

1は簡単だけど、こいつに手加えるのは反則な感じだし、汎用性にかけるなぁ。かといってわざわざ2をやるのはあまりにも面倒なわけで。

みんなならどうする?