[PHP-users 30830] Re: ビジネスロジック層とDao層とPagerについて

木内智史 samurai @ don-quijote.jp
2006年 11月 29日 (水) 15:59:12 JST


yonekawa 様

ご返事ありがとうございます、木内です。

>> ところでActiveGatewayってActiveRecordパターン
>> の実装じゃないんですか?
>> だったらドメインロジックもActiveGatewayに
>> 記述できたりしないのかな。
>> 使ったことないのとActiveRecordパターンを勘違いしてる
>> 可能性があるのでわかりませんが。

うーん、実はActiveGatewayはActiveRecordパターンじゃないんですよ。
僕は開発者じゃないのでなんとも言えないのですが、
kunitさん自身は「ActiveRecordのよさを、PHP4らしさを残しつつ移行したい」
というような開発コメントをおっしゃっていたような記憶があります。
しかし、実際のActiveGatewayは、1テーブルに対して1クラス用意する手間を
省いた結果、O/Rマッパーにビジネスロジックを記述することができないんです
ね。。。今後のバージョンアップでは分かりませんが。
個人的には、ActiveGatewayの機構などは好きなんですが、そこらへんちょっと
物足りないのは確かですf(..;)

>> ページングはViewに関係の深いものなのでS2Dao.PHP5と
>> 連携する意味ではあまりページング機能を持たせたもの
>> を返すのはよくなかったりします。
>> LimitとかhasNext程度のメタ情報をデータにくっつけて返す感じです。

そうなんですよね!
ページングって、なんだかリクエストを受け取るところから、SQLを発行すると
ころまで(そして見た目も)通して関わってくるので、
どこに記述しても「なんだかなあ」ってやきもきしますよね。
この前のメールで教えていただいた参考ページのようなアプローチで、なんとか
ActiveGatewayに絡めることができそうです。

最終的には、
ActiveGatewayConditionクラスを新しく用意して、アクション層においてリミッ
トとオフセット値をActiveGatewayConditionインスタンスに投げ込みます。
ActiveGatewayの検索条件は今後主にこのActiveGatewayConditionインスタンス
が保持することになり、ActiveGatewayの返却する結果をConditionインスタンス
と共にActiveGatewayPagerに通すことによりメタ情報を生成し、後はヘルパーが
なんとかすると、まあ、教えていただいたページまんまの手法なのですが。。。
(大規模な改造が必要ですが…)

ありがとうございました:-)

>> PEAR::Pagerはこの辺うまくやってるんでしょうか。
>> 簡単にサンプルとかソース見た限りではやっぱり設定する
>> 項目の多さが目立った気がするので・・・

うーん、うまくやってるとは思えないですが、お手軽にページング処理を実現す
るには欠かせないアイテムですね…。
例えば、S2Pager.PHP5のヘルパーの一つにPearPagerHelperのような形でブリッ
ジできてもいいとは思います。

-- 
木内智史 <samurai @ don-quijote.jp>




PHP-users メーリングリストの案内