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をやるのはあまりにも面倒なわけで。
みんなならどうする?