なぜ素直にS2Daoにしなかったか
ActiveRecordにしちゃう方がLLっぽいかなと。S2DaoのようにデータマッパーとなるクラスとPOJO(PHPだからPOPOか?)という組み合わせでもいいけど、1つのクラスで対応できるくらいの範囲でって割り切る(この割り切るってのがこれからは重要かなと)ことでシンプルになるならそれでいいかと。
PHPでは一度作ったオブジェクトに対して後からフィールドを追加するってのはなんの問題もできる(同じようにメソッドが簡単に追加できたらいいのに・・・)。この唯一といっていいPHPでのオブジェクトに対する特性が生かせるならActiveRecordでいいかなと(Rubyだともっと柔軟な対応ができるのはわかってますが・・・)。
LLDNで高橋さんが言われてましたが、「LLらしい」ってのはもっと考えないといけないですよね(これは以前から高橋さんには何度も指摘されてます・・・)。なので、Mapleでもいろいろ考えていきたいなと。
Actionに対するsetterインジェクションに関しても次のような優先順位にしてみようかなと思っています。
- フィールドに対するsetterがあれば、setterを使ってインジェクション
- フィールドしかない場合はそれに対して素直に代入する形でインジェクション(ただし、_で始まるフィールドにはなにもしない)
参照を渡したいとか、セットする際に一仕事させたい(何らかの変換をかけるとか)の場合はsetterを準備することにして、それ以外は直接フィールドに対してインジェクションってことでいいかなと。Mapleに対する感想で、たくさん項目があるフォームの場合にgetter/setterがたくさん必要ってのが・・・ってのをよく聞くので、こういう柔軟な対応がありかと。
せっかくLLなんだからもっと柔軟にってのは肝に銘じていきたいと思います。