1 名前:nobodyさん [2005/08/10(水) 02:21:08 ID:CBjrwwHd] ※フレームワーク Phrame本家 phrame.sourceforge.net/ Mojavi Project www.mojavi.org/ mojavijapan mojavi.p0t.jp/ Agavi本家 agavi.org/ Agavi.JP agavi.jp/ [ 日本発 ] Maple Project kunit.jp/maple/ [ 日本発 ] Ethna -PHPウェブアプリケーションフレームワーク- ethna.jp/ethna-tutorial-startup-practice1.html ※関連スレ 【PHP】フレームワークMapleに舌鼓 pc8.2ch.net/test/read.cgi/php/1122105465/ 【PHPフレームワーク】Ethna【スケルトン自動作成】 pc8.2ch.net/test/read.cgi/php/1123070439/ PHPでオブジェクト指向プログラミング pc8.2ch.net/test/read.cgi/php/1113724557/ その他>>2-5 参照汁
746 名前:nobodyさん mailto:sage [2005/12/07(水) 22:03:43 ID:???] つか、Ajaviは公式が0.9から全然動きが無いな。
747 名前:nobodyさん mailto:sage [2005/12/07(水) 22:05:08 ID:???] svnは?
748 名前:nobodyさん mailto:sage [2005/12/07(水) 23:01:18 ID:???] >>747 snvでは結構更新あるよ。
749 名前:nobodyさん mailto:sage [2005/12/07(水) 23:23:39 ID:???] zend frameworkキタ━━━━(゚∀゚)━━━━━!!! htp://www.phparch.com/webcasts/recordings/dec0205_zend.php
750 名前:nobodyさん mailto:sage [2005/12/07(水) 23:50:26 ID:???] >>749 英語のプレゼンだからサッパリわからんが PHPをピィチピーと発音することは分かった
751 名前:nobodyさん mailto:sage [2005/12/07(水) 23:53:53 ID:???] ははは もれもそれ思ったよ!これからピィチピーって言おう!
752 名前:nobodyさん mailto:sage [2005/12/08(木) 06:40:50 ID:???] >749 これっていつごろできるの?
753 名前:nobodyさん mailto:sage [2005/12/08(木) 08:49:04 ID:???] けっこうagaviに似てる気がする
754 名前:nobodyさん [2005/12/08(木) 18:17:58 ID:v7tgLnK2] >>741 じゃあdispatchからのforwardってなんなの?
755 名前:nobodyさん mailto:sage [2005/12/08(木) 18:25:17 ID:???] >>754 「転送する」とか「回送する」とかの意味があるから、「処理をまわす」と いう意味合いじゃないの? つか、ここは英語のスレじゃないんだが。
756 名前:nobodyさん mailto:sage [2005/12/08(木) 22:50:03 ID:???] Zendフレームワークっていつリリースか明記してある?
757 名前:nobodyさん mailto:sage [2005/12/08(木) 23:13:00 ID:???] ±1.5ヶ月でね
758 名前:nobodyさん mailto:sage [2005/12/09(金) 12:10:21 ID:???] >>749 プレゼンが下手糞で途中で飽きた。 文章でまとまってるのないの?
759 名前:nobodyさん mailto:sage [2005/12/09(金) 12:21:49 ID:???] 流行りだからって何でもかんでもPodcastすればいいってもんでもないよね。 テキストなら大事なとこだけ拾い読みできるのに。
760 名前:nobodyさん mailto:sage [2005/12/09(金) 12:43:07 ID:???] メディアを云々する前にまずGoogleを覚えようぜ
761 名前:nobodyさん mailto:sage [2005/12/09(金) 14:16:53 ID:???] 誤爆ですか?
762 名前:nobodyさん [2005/12/09(金) 17:59:40 ID:kJFA21a1] Decorator使ってる時にリダイレクトしたら、 サブテンプレート作成中に処理がブチギレるよね。 ポストフィルタでリダイレクトすべきなのか。 そのあたりどうしてる?
763 名前:nobodyさん mailto:sage [2005/12/10(土) 14:39:54 ID:???] 質問です。 mojavi2でSmartyを使っています。 XOOPSのテーマを使っていてsmartyのデリミタが<{と}>です。 $lblocks = array(array('title' => 'エラー', 'content' => '<div><{$error}></div>')); $renderer->setAttribute('xoops_lblocks',$lblocks); すると<がサニタイズされて>に変換されて、html上表示されてしまいます。 サニタイズさせない方法ってあるでしょうか?
764 名前:nobodyさん mailto:sage [2005/12/10(土) 19:34:26 ID:???] >>763 $smarty->left_delimiter = '<{'; $smarty->right_delimiter = '}>'; てか、、マニュアル嫁
765 名前:nobodyさん mailto:sage [2005/12/10(土) 23:53:59 ID:???] >>764 >>763 の >XOOPSのテーマを使っていてsmartyのデリミタが<{と}>です。 とあるように、その設定はXOOPSのテーマを使うために既にしています。 そのために<と>がサニタイズされて困っているんです。 その設定をしなければ、{と}だけで問題ないのです。 テーマ側に<{$error}>と書けば問題ないのですが、setAttributeで渡そうとすると サニタイズされてしまいます。
766 名前:764 mailto:sage [2005/12/11(日) 01:36:43 ID:???] >>763 >smartyのデリミタが<{と}>です。 これ読めてなかった… すまん、763
767 名前:762 mailto:sage [2005/12/11(日) 11:51:35 ID:???] リダイレクト後にexitしてるのが問題だっただけだった。 リダイレクトっていっても ヘッダに出力するだけで、 処理が止まるわけじゃないんだよな。
768 名前:nobodyさん mailto:age [2005/12/12(月) 19:50:27 ID:???] mojavi3つかってます。 modelで$this->getContext()->getRequest();するのと、 actionで$this->getContext()->getRequest();してモデルに渡すのと どっちがmvc的に正しいですか?
769 名前:nobodyさん mailto:sage [2005/12/12(月) 20:44:06 ID:???] >>768 モデルはコントローラやビューと結合していないのが理想なので、action で リクエストを取得して、それに応じて model に渡すのがよいと思う。
770 名前:nobodyさん mailto:sage [2005/12/12(月) 20:44:31 ID:???] 「結合してない」って言い方は悪いな。「疎結合」に言い替える。
771 名前:nobodyさん mailto:sage [2005/12/12(月) 20:44:42 ID:???] >>768 前者の方がmodelとactionの結合が疎になりやすい。
772 名前:768 mailto:sage [2005/12/12(月) 21:33:07 ID:???] どうもありがとうございました。 さっぱりしました。
773 名前:nobodyさん mailto:sage [2005/12/12(月) 23:43:46 ID:???] >>769 えええええええええええ? だったらなんでmodelに $this->getContext()->getRequest(); できる機能わざわざつけてあるのさ。 actionもMVCのmodelに相当するんじゃないの? model内で $this->getContext()->getRequest();とかやって、 actionでgetModelするのが普通だと思うが。 >>772 よ。すっきりするのはまだ早い
774 名前:nobodyさん mailto:sage [2005/12/12(月) 23:50:24 ID:???] moja3て、Modelがあんだ〜 class HogeModel extends Model って感じ?
775 名前:nobodyさん mailto:sage [2005/12/13(火) 00:06:36 ID:???] >>773 > actionもMVCのmodelに相当するんじゃないの? 違うよ。controllerとmodelのアダプタ(アダプタパターンとは別の意味)。 controllerの一部をコマンドパターンとして抽出したとも見れる。 だから本当はactionはビジネスロジックを書くところじゃないんだけど、ロジックもそのまま書けてしまう手軽さは利点であり欠点でもあると思う。 requestをいじるのはcontrollerであるべきだと思うから俺はaction内でgetRequestして、相応のmodelを呼び出す派。
776 名前:768 mailto:sage [2005/12/13(火) 01:51:59 ID:???] やっぱり、model内で $this->getContext()->getRequest(); のはなんか気持ち悪い。
777 名前:nobodyさん mailto:sage [2005/12/13(火) 01:56:13 ID:???] 俺もactionでrequest派。 最初はmodelでやっていたが そうなると、起点となるactionを見ただけでは どんなパラメータをいじっているのかが分からず、 流れを把握しにくくなったから。 またリクエストパラメータはどちらかといえば プレゼンテーション層に属するものなので プレゼンテーション層であるactionで受け取るのが理にかなっている とも思う。 バリデーションやコンバートはactionでやってるんだから ノータッチでmodelに渡していても疎結合とは言えないのでは? むしろactionで受け取ってmodelに渡すというレイヤパターンにした 方が疎結合といえる気がする。
778 名前:nobodyさん mailto:sage [2005/12/13(火) 10:18:09 ID:???] model で request 処理すると,model の unit test がやり辛くなると思う それって context と request の両方を外部に依存することになるし action で request を処理しちゃえば model は request の「値」のみに依存することになり より疎結合になる # なんてことを周囲に喋ると「日本語喋れ」とか言われる罠w
779 名前:nobodyさん mailto:sage [2005/12/13(火) 11:29:59 ID:???] 記述が楽=疎結合じゃないんだよね プロトコルを増やすわけだからむしろ記述は面倒くさくなりがち
780 名前:nobodyさん mailto:sage [2005/12/13(火) 14:13:53 ID:???] >>773 フレームワークが許容しているのと、理想的な設計との間には 隔たりがあるってことを理解するべき。 元の質問は > どっちがmvc的に正しいですか? ‥なので、MVC 的には action に依存しない方が理想だろうね。 >>778 のいう「unit test がやり辛い」ってのは、model がフレームワークと 密接に結合していて使い勝手が悪い証拠。結合度が高いので、再利用しずらい (再利用する時に、間接的にフレームワークにも依存することになる)。 model と action を分離しておけば、例えば、Web アプリとは別に DB に対する バッチ処理を PHP で書く必要がでてきた時に model を流用できる。 ただ、理想的な設計が、即座に現場で適用されるべきかというと、それは また別問題だけどな。
781 名前:nobodyさん mailto:sage [2005/12/13(火) 18:51:28 ID:???] >>780 いや、疎結合とかはlib側で考えるもんなんじゃないの? >フレームワークが許容しているのと、理想的な設計との間には >隔たりがあるってことを理解するべき。 許容じゃなくて、意図的に実装してるんだとおもうんだけど。 modelは明らかにactionと密接な連携を取るためのものだと思うし。 >model と action を分離しておけば、例えば、Web アプリとは別に DB に対する >バッチ処理を PHP で書く必要がでてきた時に model を流用できる。 その流用はlibでつくったもののがやりやすいよね。
782 名前:nobodyさん mailto:sage [2005/12/13(火) 18:54:29 ID:???] >>777 自分は逆にactionはどんなmodelを使ってるかの道しるべとして使ってるから 流れ把握は全然困らない。てかむしろしやすい。
783 名前:nobodyさん mailto:sage [2005/12/13(火) 18:59:51 ID:???] てか、そもそもlibの存在忘れて疎結合とか言ってない?
784 名前:nobodyさん mailto:sage [2005/12/13(火) 19:08:07 ID:???] libって何さ、ライブラリ?
785 名前:nobodyさん mailto:sage [2005/12/13(火) 19:10:01 ID:???] なにこの流れ。 スゴいお勉強になるんだけお。
786 名前:nobodyさん mailto:sage [2005/12/13(火) 19:11:38 ID:???] >>780 の言う「許容」ってのはModel内で$this->getContext()->getRequest()できちゃうって話だよね? >>781 と微妙に噛み合ってないみたいだけど。 つーかMojaviに関して言えばContextに一貫性を持たせようとした結果、たまたまModelの中でもRequestが取得できてしまうとも見れると思う。 その意味ではMojaviの欠点の一つかもしれんな。 まあ>>773 から反論がない限りはgetRequestはActionでやるべきってのは満場一致でしょ。 その結論に至る思考プロセスが個々人いろいろなのがおもしろいなw
787 名前:nobodyさん mailto:sage [2005/12/13(火) 19:18:52 ID:???] >>786 ん?かみ合ってないのか? >つーかMojaviに関して言えばContextに一貫性を持たせようとした結果、たまたまModelの中でもRequestが取得できてしまうとも見れると思う。 つまり、Requestだけはmodelでやるべきではないってこと?getControllerやgetUserはありで? だったらかみ合ってないてのはわかるんだけど。 >>784 いや、libはautoloadで定義するやつよ。 こいつにこそ疎結合を求めるもんだとおもうんだけど…
788 名前:nobodyさん mailto:sage [2005/12/13(火) 19:21:40 ID:???] >>786 ちなみにlibとmodelはどう区切ってる?
789 名前:nobodyさん mailto:sage [2005/12/13(火) 19:34:56 ID:???] M2のactionChainがなくなったのも、デコレータだけじゃなくgetModelが 追加されたからなんだと思うし…
790 名前:786 mailto:sage [2005/12/13(火) 19:40:45 ID:???] >>787 いや、「かみ合ってない」って言葉が気に障ったなら気にしないでくれ。 疎結合の話に対してではなく、request云々の方で感じたこと。 > 許容じゃなくて、意図的に実装してるんだとおもうんだけど。 の部分ね。 modelとlibのどちらに疎結合を求めるかってのにはノーコメント。 俺の場合はlibにフレームワークのコンポーネントから外れた自分クラスとかは入れないんで。 多くはModelで、あとはSmartyの実装が微妙だったころに改造したViewとか。(最新バージョンがどうなってるのかはチェックしてない)。 > つまり、Requestだけはmodelでやるべきではないってこと?getControllerやgetUserはありで? まあそういう風に見るとrequestとuserの非対称性が浮き彫りになるが、俺の場合は結果的にはそういう方針でやってるよ。 Modelの中でgetRequestを呼び出すのはせいぜいsetErrorするときだけだな。 >>788 前述の通り、俺的には「区切ってる」っていう感覚ではあまりない。 共通して使うものをlibに入れるだけ。
791 名前:nobodyさん mailto:sage [2005/12/13(火) 19:51:24 ID:???] フレームワークだから ある程度の自由度を残してるのは当然ともいえるし どっちもアリっちゃアリだな。
792 名前:nobodyさん mailto:sage [2005/12/13(火) 19:54:09 ID:???] >>790 なるほど、そういうことね。確かに勘違いだわ。 でも、 >まあそういう風に見るとrequestとuserの非対称性が浮き彫りになるが、俺の場合は結果的にはそういう方針でやってるよ。 getUserもmodel内で使ってるんだ? ますますわからんくなってきた… ちなみに forum.mojavi.org/index.php?showtopic=1280&hl=getmodel ここにあるようなソースはアリなんだよね?
793 名前:nobodyさん mailto:sage [2005/12/13(火) 19:56:03 ID:???] context自体を渡すことがおかしいって言ってるのかと勘違いしてた。
794 名前:nobodyさん mailto:sage [2005/12/13(火) 19:59:28 ID:???] どっちにしても、自分の場合、actionはアダプタじゃなくてmodelで、 action内が複雑になりそうなときmodelに助けを求めるって感じでやってるから。 例えmodel内でgetRequestしても自然なつもりなんだけどなぁ
795 名前:768 mailto:sage [2005/12/13(火) 20:11:31 ID:???] じつはagaviでした。 agaviだとみんな食いついてくれないと思ったので. 結果予想以上に皆さんの意見が聞けてよかった。
796 名前:nobodyさん mailto:sage [2005/12/13(火) 20:13:34 ID:???] >>792 うーん、そこのソースのマズイ部分ってとりあえずどこ?w つーかgetUserをModelでやるのっておかしいかな?言われてみると少し迷うな。 ログインの処理をする専用のModelとかそのままsetAuthenticatedしてるのと、あとはaddCredentialみたいなのもModelの中でちらほらやってしまっている。 もろにビジネスロジックかと思うんだが。 >>794 まあどういう風にやっても間違いってことはないと思う。 Actionにビジネスロジックを書いても結果的には「ロジックとデザインの分離」っていう大元の目的は達成されてるわけだし。
797 名前:nobodyさん mailto:sage [2005/12/13(火) 20:28:15 ID:???] >>795 みなさんというか、2、3人だと思うけどね。自分含めてw
798 名前:nobodyさん mailto:sage [2005/12/13(火) 20:31:02 ID:???] >>797 まーこの板はそういうとこだよなw
799 名前:nobodyさん mailto:sage [2005/12/13(火) 20:34:29 ID:???] >>796 >うーん、そこのソースのマズイ部分ってとりあえずどこ?w その感想自体が答えですw さんきゅw >ログインの処理をする専用のModelとかそのままsetAuthenticatedしてるのと、あとはaddCredentialみたいなのもModelの中でちらほらやってしまっている。 まぁたしかにgetUserはその辺の機能があるからね。言われれば気持ちはわかる。 ちなみに開発人数はどれくらい? 自分のとこの場合人数が5人で中途半端だから、下手に縛り設けようにもうまく機能しないことが多いんだよね… フレームワークで許されている権利は使ってよしってことにしてるからってのもあるかも。
800 名前:nobodyさん mailto:sage [2005/12/13(火) 20:35:06 ID:???] userをmodelでいじるのは全然おかしくないと思う つまるところセッションだし。 requestはブラウザから直接送られてくるデータだから、 いきなりmodelにいじらせるには生々しすぎる感じがするな。
801 名前:nobodyさん mailto:sage [2005/12/13(火) 20:40:49 ID:???] >>800 いや、それだと話がループする…
802 名前:nobodyさん mailto:sage [2005/12/13(火) 20:42:35 ID:???] >>800 そこはmodelで疎結合かどうかの話でしょ?
803 名前:nobodyさん mailto:sage [2005/12/13(火) 20:45:33 ID:???] >>800 >requestはブラウザから直接送られてくるデータだから、 おいおい大事なget,setAttributeはどこいった?
804 名前:nobodyさん mailto:sage [2005/12/13(火) 20:53:12 ID:???] ひょっとして、getRequest=ブラウザからのデータで話進められてたの?
805 名前:nobodyさん mailto:sage [2005/12/13(火) 21:18:59 ID:???] ああ、attribute忘れてたw 内部パラメータとしてのattributeならmodelでいじってもおかしくはないよね viewに渡すためのコンテナとしてなら、 modelから受け取ってactionでこめこめするのがいいと思う
806 名前:nobodyさん mailto:sage [2005/12/13(火) 21:31:18 ID:???] modelでごにょごにょしたものはactionにいくのか? それともviewか?
807 名前:nobodyさん mailto:sage [2005/12/13(火) 21:38:24 ID:???] >>792-793 model に context が渡ってること自体が気に入らない。理由は >>796 の人が 述べてる理由が近いかな。 >>805 attribute も model じゃ触らない。ビジネスロジックはコントローラに封じ込 めるべきってのは大体の人が賛成してくれると思うけど、attribute を ビジネスロジックに一切関係ない使用例を見たことがない。もしあるなら 示してくれると、すごく嬉しい。 一般的(≒ Java の世界)にはそういう流れになってない? モデルは POJO (getter/setter だけのオブジェクト) にして、必要に応じて AOP でDAO や O/R マッピングしなさい、と。
808 名前:nobodyさん mailto:sage [2005/12/13(火) 21:51:40 ID:???] Javaとは言語仕様も実際の使われ方も違うのに、StrutsやIBMのホワイトペーパーと無理にあわせてもしょうがない。
809 名前:nobodyさん mailto:sage [2005/12/13(火) 21:55:50 ID:???] >>807 >model に context が渡ってること自体が気に入らない。 えぇ?なんで気に入らないのに >>796 の人と同意なの? 根本的におかしいぞそれ。
810 名前:nobodyさん mailto:sage [2005/12/13(火) 21:56:59 ID:???] >>807 つまり、>>792 のソースもおかしいってことだよね?
811 名前:nobodyさん mailto:sage [2005/12/13(火) 21:58:05 ID:???] >>806 actionにいってからviewじゃない? 直接viewにいくのはなんか気持ち悪いな >>807 Model=POPOなの? そこまで疎結合にするならModelをextendsする意味がないような… 俺はModel≒ビジネスロジックという認識だった。
812 名前:nobodyさん mailto:sage [2005/12/13(火) 22:00:37 ID:???] 一般的ではなくm3やagaviで開発する上での話をしているので、 >>807 の話はお門違いなわけだが
813 名前:nobodyさん mailto:sage [2005/12/13(火) 22:04:25 ID:???] mvc的に正しいのはって聞いてるんだから御門違いじゃないだろう
814 名前:nobodyさん mailto:sage [2005/12/13(火) 22:05:40 ID:???] まぁ、お門違いじゃないにしてもおかしなこと言ってるのは確かだな
815 名前:nobodyさん mailto:sage [2005/12/13(火) 22:17:24 ID:???] 807は モデルはフレームワーク自体からも疎結合である方がいいって意味だよね。 考え方は分からないでもないけど そこまで疎にする必要がはたしてあるのか… そもそもフレームワークを採用する時点で 全面的な依存を選択しているわけで、 モデルだけを疎結合することにどれほどの意味があるのか
816 名前:nobodyさん mailto:sage [2005/12/13(火) 22:17:28 ID:???] javaが一般的ってのも今は大分微妙になってるけどなぁ
817 名前:nobodyさん mailto:sage [2005/12/13(火) 22:19:09 ID:???] そもそもMVCモデルってそれぞれが密接に関連してるよなぁ 疎を考えるんなら777の言うようにレイヤーパターンで考えたほうが良いと思う MVCパターンをレイヤーパターンに置き換えると VCがプレゼンテーション層 Mがドメイン層とデータソース層 それぞれの層は独立していて別の層を知らないのが理想 actionはドメイン層とプレゼンテーション層の中間層かな? だからactionは プレゼンテーションからの入力(リクエストパラメータ)を受け取る ドメインロジックを呼び出す パラメータをドメインロジックに渡す ドメインロジックでゴニョゴニョした結果をプレゼンテーションロジックに渡す こんな流れがいいんじゃないかなぁ 結論、mojaviのModelクラスはイラネ
818 名前:nobodyさん mailto:sage [2005/12/13(火) 22:19:56 ID:???] >>815 あぁ、激しく同意… 多分agaviも>>815 みたいな思想があってああいう設計になってるんだと思う。
819 名前:nobodyさん mailto:sage [2005/12/13(火) 22:23:54 ID:???] >>817 それだとactionがちょっとややこしくなっちゃわない?
820 名前:nobodyさん mailto:sage [2005/12/13(火) 22:33:04 ID:???] >>815 >>817 おまいらユニットテストしないんですか? >>819 むしろすっきりする actionにロジック書くわけじゃないからね あくまでAPIを呼び出して使うだけ mojavi的にはこんな感じ $id = $request->getParameter('id'); $service = new HogeService(); $hoge = $service->getHoge($id); $request->setAttribute('hoge', $hoge);
821 名前:nobodyさん mailto:sage [2005/12/13(火) 22:34:10 ID:???] >>817 最後の結論だけ良く分からない Model=ドメインロジックで問題なくね?
822 名前:nobodyさん mailto:sage [2005/12/13(火) 22:36:37 ID:???] >>820 autoload.iniが大変なことになりそうだ。
823 名前:nobodyさん mailto:sage [2005/12/13(火) 22:49:29 ID:???] >>820 それってデータベースコネクションはどこでどうやって呼出してんの?
824 名前:nobodyさん mailto:sage [2005/12/13(火) 23:00:01 ID:???] autoload.iniの項目が多いとやっぱり遅くなるの? おれはできるだけ使わんやつは消しとるよ。
825 名前:nobodyさん mailto:sage [2005/12/13(火) 23:04:08 ID:???] >>821 概念的にはその通りだけど mojaviのModelクラスに依存したくないという意味でイラネということです >>822 それすごく悩んだけど 自前のクラスローダーで解決したお >>823 DB接続用クラスをSingletonで作成してどこからでも呼び出せるようにしてるよ DB::getConnection()みたいな感じで といってもどこからでも呼び出してるわけじゃないけどね
826 名前:nobodyさん mailto:sage [2005/12/13(火) 23:55:30 ID:???] >>825 なんかもうそれ自分ルールだらけじゃん… まぁ別にそれが悪いわけではないけど
827 名前:nobodyさん mailto:sage [2005/12/13(火) 23:58:11 ID:???] >>825 >自前のクラスローダーで解決したお それはautoload側をいじったのか、ロード関数みたいなのつくったのか
828 名前:nobodyさん mailto:sage [2005/12/14(水) 00:01:27 ID:???] 結論 >>825 のやってることは、agaviのmodelで解決。 無駄な作業乙
829 名前:nobodyさん mailto:sage [2005/12/14(水) 00:34:57 ID:???] もしかしてSingletonModelってクラス? Singletonごときでなんであんなものに頼らなきゃいけないのか疑問・・・。 しかもグローバルに呼び出しできなくなるし
830 名前:nobodyさん mailto:sage [2005/12/14(水) 00:41:56 ID:???] PHPでシングルトンってほぼ無意味だよな。
831 名前:nobodyさん mailto:sage [2005/12/14(水) 01:27:53 ID:???] >>830 まあどちらかと言うと、インスタンス2つ以上作ろうとする方が頭どうかしてるもんな。 Controllerとか。
832 名前:nobodyさん mailto:sage [2005/12/14(水) 01:43:05 ID:???] >>830 リクエスト毎にオブジェクトが生成->破棄されるという意味では無意味だな。 ログとかDBコネクションとかでは使えるけど、それもグローバル変数に入れとけばいいみたいな。
833 名前:nobodyさん mailto:sage [2005/12/14(水) 01:44:31 ID:???] HTTPリクエスト単位で記憶が失われるPHPでは シングルトンって「グローバル変数のオブジェクト指向版」みたいな意味しかない気がする 実際に役に立つのはDB接続みたいなリソース使いまわしくらいって印象が……
834 名前:nobodyさん mailto:sage [2005/12/14(水) 01:46:05 ID:???] >>824 クラスが必要なときのみ読みこむようにその設定があるんだし、そんなに気にしなくてもいいのでは。 まぁ少ないほうが早いに決まってるけど。
835 名前:nobodyさん mailto:sage [2005/12/14(水) 03:49:22 ID:???] >>825 =>817 そこまで行くとMojaviの理念から外れてるし、それはもうmojaviから派生した>817のフレームワークであって、 とても「mojaviを使っている」とはいえないと思うが。 なのでmojavi(agavi)でMVCどうやるのか(requestをどう扱うか)っていう話においては参考にならない。 >>820 も同様 ただ、ユニットテストはMojaviの致命的な欠点だとおもう。 本題の"request"の扱いについてはModelはControllerを知るべきではない、 そして"request"はControllerである。よって"request"は"Model"で扱うべきではない。 とおもうが。 実際はModelでしかたなくrequest呼び出したことありますごめんなさい。 設計が悪かった。反省してます。
836 名前:nobodyさん mailto:sage [2005/12/14(水) 06:37:08 ID:???] オブジェクトの依存性の話なのか設計上の規約も含めるのか判らん
837 名前:nobodyさん mailto:sage [2005/12/14(水) 06:44:24 ID:???] 誰か両方の意見をまとめてくり
838 名前:nobodyさん mailto:sage [2005/12/14(水) 07:15:24 ID:???] いや、なんか感動。 疑問は晴れてないけど。
839 名前:nobodyさん mailto:sage [2005/12/14(水) 10:23:55 ID:???] 図にしてみたぞ♥ Controller ↓ Request ⇔ Action ⇔ Model ⇔ User,Database ↓ Controller ↓ Request ⇔ View ⇔ Model | ←|→ プレゼンテー | ドメイン層、データソース層 ション層 | | 俺にとってActionとはControllerの一部であり、Requestの受付とModelの呼び出し以外のことはしない。 Action::executeすげーシンプルウマー(AAry)。>>820 、>>835 と基本的に同じ。 俺にとってModelとはMojavi内で唯一ビジネスロジックを担当する部分である。 ちなみにModel以外はデータ層に触りません!
840 名前:nobodyさん mailto:sage [2005/12/14(水) 11:25:24 ID:???] Modelはどうまとめてる? 俺はOO的にうまいことまとまらない場合は 似たような関数をまとめてお茶を濁してる。
841 名前:nobodyさん mailto:sage [2005/12/14(水) 11:38:43 ID:???] >>839 Model にビジネスロジック入れたら駄目じゃん。話にならん。
842 名前:nobodyさん mailto:sage [2005/12/14(水) 11:44:42 ID:???] >>841 839じゃないけど 俺もModelはビジネスロジックを担当する部分という認識なんだが きみのいうModelって何?
843 名前:839 mailto:sage [2005/12/14(水) 11:46:02 ID:???] >>840 たしかに関数の入れ物に過ぎないModelができちゃうこともあるかもw 俺の場合はSean KerrのAction::executeのコメントで、 * Execute any application/business logic for this action. * * In a typical database-driven application, execute() handles application * logic itself and then proceeds to create a model instance. Once the model * instance is initialized it handles all business logic for the action. * * A model should represent an entity in your application. This could be a * user account, a shopping cart, or even a something as simple as a * single product. っていうやつ(mojavi/action/Action.class.php)をけっこう意識しながらやってる。 Modelはentityを表すってのけっこうしっくりきてるかも。 つーか今読み返してみたら、Sean Kerr的にはActionでビジネスロジックもありっていうスタンスっぽいなw ただ、基本はModel=ビジネスロジックでしょ。
844 名前:nobodyさん mailto:sage [2005/12/14(水) 12:08:56 ID:???] 訳: Actionに対するアプリケーションロジック・ビジネスロジックの実行をします。 よくあるデータベースを用いたアプリケーションでは、execute()の中でアプリケーションロジックを扱い、続いてModelのインスタンスを生成します。 Modelの初期化をしたら後はその中で全てのビジネスロジックを扱います。 Modelはアプリケーション内のエンティティを表すようにすると良いでしょう。 例えば、ユーザーアカウント、ショッピングカートであったり、時には個々の製品といったシンプルなものであることもあるでしょう。
845 名前:nobodyさん mailto:sage [2005/12/14(水) 12:12:22 ID:???] >>844 そうそう。 やっぱり841はビジネスロジックの定義を勘違いしてないか? エンティティーのメソッドはすなわちビジネスロジックだし。 Model=ValueObjectと勘違いしてる気がする。
846 名前:nobodyさん mailto:sage [2005/12/14(水) 14:28:05 ID:???] みんな言葉の定義が微妙に違ってるだけだと思う。 というか、レイヤとモデルを微妙に混同してるのかも。 ドメイン層のレイヤにビジネスロジックがあって、 そこで操作されるものがドメインモデル(エンティティ)。 これをそのまま実装に反映させるなら、 ドメインモデルとビジネスロジックは別クラスにするのが自然。 だけどケースバイケースで、ドメインモデルのクラスが ビジネスロジックのメソッドを持つ実装にするのもあり。 どちらがいいかは一概には言えないと思う。 >>845 それは違うよ。 ValueObjectはどちらかというとドメインモデルではなく プレゼンテーションモデル。 ドメインモデルをそのままプレゼンテーション層まで引きずってくる 設計方針ならValueObjectぽっく見えるかもしれないけど、 プレゼンテーションモデルをきっちりわける設計方針なら >>841 の言ってるモデルはドメイン層で閉じてるはず。