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

yonekawa tcgrim @ gmail.com
2006年 11月 27日 (月) 20:42:57 JST


はじめまして、yonekawaと申します。

> SQL発行などはすべてActiveGatewayがおこなってくれるために、Dao層自体にSQL
> の記述が一切ありません。こういった状況下においてDao層は果たして有効なの
> でしょうか?それとも、O/RマッパーをDao層と定義してもよろしいのでしょうか?
Dao層については色々意見があると思いますが、O/RマッパーはれっきとしたDao層だと思われます。
モデル層をロジックとDaoに切り分けたのであれば、重要なのはSQLを記述するかどうかではなく、
データストアへのアクセスをDao層が担うことだと思います。
#S2Dao.PHP5は2Way SQLで他のO/Rマッパーと違ってSQLを別で書くこともできますが。


> そしてもう一つの質問はDao層にどのようにPagerをからませるべきかです。
Dao層とPagerの位置づけはなかなか悩みどころですね。

僕はそれほどきっちりとする必要はないと思っていて、
S2PagerがS2Dao.PHP5の結果をフィルタリングして、ページングに必要最低限なデータは返してくれるので、
これをロジックとかコントローラで加工すれば十分だと思います。
最低限のデータで不便なときはPagerViewHelperというクラスに便利なメソッドも用意されているのでそこまで困ったことはないです。

PEAR::PagerとかだとDao層から受け取ったデータのフィルタリングもロジックやコントローラになるんでしょうか?
そっちはあまり詳しくないです。

> 理想としましては、Dao層の返却するDTO自体が、Pagerの機能を包括しているこ
> となのですが、
一応これは検討中です。
S2Dao.PHP5はデータをJsonやYamlで返すことができるので、そのフィルタのひとつにPagerをなんとか組み込めないかなーと妄想してます。


ModelをDao層とロジックに分離するということですが、S2Base.PHP5というプロダクトにちょうど同じような構成の実例があります。
モデルにS2Dao.PHP5、Service(Logic)はPure PHP、ViewにSmartyが使われています。

S2Pagerとの連携もサンプルが公開されているので一度ご覧になってみてはいかがでしょうか?
http://wiki.s2php5.jp/s2base.php5/s2pager.php5_withsmarty

--
yonekawa <tcgrim @ gmail.com>
blog: http://d.hatena.ne.jp/yonekawa/

06/11/27 に 木内智史<samurai @ don-quijote.jp> さんは書きました:
> いつもお世話になっております。木内と申します。
> 普段はやりとりを覗いているだけなのですが、今回コーディング中に悩んでしまっ
> て、初の投稿をさせていただきます。よろしくお願いいたします。
>
> 今回質問させていただきたいことは、
> 各コーディング層(?)の切り分けを皆さんどのように行っているのでしょうか?
> という事です。
> 現在フレームワークなどによって、「MVCの切り分け」が重要とされていますが、
> M(モデル)層においてさらに、
>
> ・ロジック層
> ・データアクセス層
>
> の二つに切り分ける事が可能だと思います。
> そこで僕は「よし、分けよう」と思い、例えば一つの機能のコンポーネントを用
> 意する場合、
>
> ・Component_Logic
> ・Component_Dao
>
> という二つのクラスを作成し、SQL発行などは全てDao層において集中することを
> 心がけています。
> ここで、1つめの悩みがでてきます。
> 僕はフレームワークMapleを使用して開発を行っているのですが、Mapleには
> ActiveGatewayという優れたO/Rマッパーが付属(?)しています。
> SQL発行などはすべてActiveGatewayがおこなってくれるために、Dao層自体にSQL
> の記述が一切ありません。こういった状況下においてDao層は果たして有効なの
> でしょうか?それとも、O/RマッパーをDao層と定義してもよろしいのでしょうか?
> S2Dao.PHP5はO/Rマッパーだと思いますので、そういう意味ではやはり、
> O/Rマッパー = Dao
> という認識を持つのですが、誤りはないでしょうか?
>
>
> そしてもう一つの質問はDao層にどのようにPagerをからませるべきかです。
> これに関しては、S2Pager.PHP5とS2Dao.PHP5の絡みに詳しい方がいらっしゃった
> なら解説いただけると嬉しいです。
> 理想としましては、Dao層の返却するDTO自体が、Pagerの機能を包括しているこ
> となのですが、皆さんはどのうにDao層とPagerを絡めておりますでしょうか?
> Pagerに使用するクラス(自作、PEAR::Pager、S2Pager.PHP5など)も同時に教え
> ていただけると嬉しいです。
>
> 以上、ちょっと質問が長くなりましたが、よろしくお願いいたします。
>
> --
> 木内智史 <samurai @ don-quijote.jp>
>
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>


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