PHPでOOP (894レス)
上下前次1-新
637(1): 2008/12/21(日)00:53 ID:??? AAS
>>636
なんとなく分かるけど、
例えばそれだと「2008-13-45は日付(のつもり)」ってことを
コントローラが知っとかないといけないってことだよね?
あと、日付が必要なくなった、とかいうときは
コントローラーを変更しないといけないってことにならない?
なんか拘ってるようでアレだけどお勉強スレってことで許してw
638(1): 2008/12/21(日)00:57 ID:??? AAS
って、もしかして、リクエストとして渡ってくるものを想定してるのかな。
hoge.php?date=20081231
とか。
639(1): 2008/12/21(日)12:32 ID:??? AAS
>637
「コントローラ」の指している範囲が俺と違う気がする。
俺はディスパッチャ(処理の振り分け)部分じゃなくて、そこから振り分けられる先のコントローラを指している。
ぐぐったが、「アクション」としてクラスにして丸ごとコントローラから切り離す文化圏もあるようだな。
「日付のつもりで送られてくる文字列がある」という事実は、ディスパッチャは(たいていの場合)知らない。
が、コントローラ(アクション)は知っている。だって知らないと日付具象モデルに処理を引き渡しようがないからな。
Cにはどの道変更が入る。リクエストをモデルに引き渡すのが仕事だからな。
「日付がどこからどう渡ってくるか」はCの管轄であってMじゃない。Mはそれを知っていてはいけない。
Mは「日付を渡されたらどうする」だけ知っていればよく、実際問題どこに日付があるかはCが隠蔽すべき。
たとえば、日付指定でDBからレコードを取っていたのを、「無指定時は今日と見なす」と変更したとする。
省3
640: 2008/12/21(日)12:37 ID:??? AAS
まあ実際は、日付省略時のMの挙動を変えるだろうけどな。
>638
入力値以外のもの(DB内の値とか処理結果)の検証は当然モデル。
というか、そういうのは一般にはバリデーションとは言わずアサーションと呼ぶ。
641(1): 2008/12/21(日)13:45 ID:??? AAS
>>639
Cは振り分けだけが仕事だと思ってたんだけど。
その先にさらに C があることなんてあるのか。
サブコントローラーみたいな感じ?
642(3): 2008/12/21(日)14:51 ID:??? AAS
>641
やっぱ、そこか。
例えばブログの場合、エントリー群を司るモデルや、タグクラウドを司るモデルができる。これは自明だな。
で、データを受け取って画面を表示するだけの、ごく単純なビューがいる。これも自明。
で、それら呼び出してページのデータを作る、という「データの統合」を司るクラスが必要になる。
これをMVCのうち、MとCのどっちに置くかの問題。
MVC、MVCって言ってるけど、本質的には4層なんだよ。
処理の振り分けに1層を割くならば、4層なくてはならない。
処理の振り分け=呼び出すCの決定(ディスパッチャ)→どのMを呼び出すかを制御する(コントロール)
→データを実際に扱う(モデル)→表示(ビュー)、となる。
省4
643: 2008/12/21(日)15:35 ID:??? AAS
>>642
>たとえば、日付指定でDBからレコードを取っていたのを、「無指定時は今日と見なす」と変更したとする。
>この場合は、Cを「日付省略時は現在の日付でMを呼び出す」ように変更し、Mには触れないのが正しい。
これって制御じゃなくてロジックだからモデル的仕事じゃねぇの?
644: 2008/12/21(日)16:01 ID:??? AAS
>>642
横槍で質問してすまんかった。
すげーわかりやすい。
勉強になった。ありがとう。
645(1): 2008/12/21(日)16:03 ID:??? AAS
4層www
646: 2008/12/23(火)01:41 ID:??? AAS
>>645
あなたの顔に死相が出ていますよ。4層だけに。
647(1): 2008/12/24(水)12:54 ID:??? AAS
考え方としてディスパッチとコントロールは分けるべきだが、
実装するときは、コントロールで括るよな?
648(1): 642 2008/12/24(水)22:47 ID:??? AAS
>647
M・V・Cで分けるならCってのは同意。いちおう
> 処理の振り分けに1層を割くならば
と予防線は張ってあるわけだが。
俺はControllerの親クラスとかControllerFactoryでディスパッチする事が多い。
649: 2008/12/25(木)12:55 ID:??? AAS
>>648
> Controllerの親クラスとかControllerFactoryでディスパッチする事が多い
ディスパッチャーのインターフェースを作って、コントローラクラスでインプリメンツするってのは駄目なの?
650: 2009/01/04(日)21:25 ID:??? AAS
保守
651: 2009/01/10(土)18:38 ID:??? AAS
保守
652: 2009/01/18(日)01:35 ID:??? AAS
手始めに、サイトのリニューアルついでにSmarty入れてCMS'っぽく'してみる。
653: 2009/01/26(月)20:14 ID:??? AAS
お?サンプルか?
654: 2009/02/02(月)14:37 ID:JcAer1H1(1) AAS
勉強すればするだけフレームワーク使えば手っ取り早いことがわかった。
自作のモチベ下がっちまったい。
655: 2009/02/02(月)14:46 ID:??? AAS
自作する理由は楽するためじゃないだろう
656: 2009/02/02(月)14:54 ID:??? AAS
もっと手っ取り早く使えるフレームワークをつくるために勉強すればいい
上下前次1-新書関写板覧索設栞歴
あと 238 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.018s