PHPでOOP (894レス)
PHPでOOP http://medaka.5ch.io/test/read.cgi/php/1172205352/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
544: nobodyさん [sage] 2008/02/25(月) 13:39:24 ID:??? 1は需要のないスレを無理に上げるのやめて欲しいよ 自分の存在を認められたいだけのオナニスレだよ http://medaka.5ch.io/test/read.cgi/php/1172205352/544
545: nobodyさん [sage] 2008/02/25(月) 13:44:21 ID:??? アフィリエイト見てオナニスレてことに確信がもてたよ このスレは1の自己満足以外に何も生まれないよ結果としてね http://medaka.5ch.io/test/read.cgi/php/1172205352/545
546: nobodyさん [] 2008/02/25(月) 13:45:42 ID:nYfgU4lL >>543-544 何で君はスルーができないの? 誰も書き込まなければそのまま消えていくんじゃないの? http://medaka.5ch.io/test/read.cgi/php/1172205352/546
547: nobodyさん [sage] 2008/02/25(月) 13:46:57 ID:??? コテハン使って自慢げにソースコード公開するやつは よほど腕に自信がある奴か 初心者相手に自己満足したい奴かのどっちか http://medaka.5ch.io/test/read.cgi/php/1172205352/547
548: nobodyさん [sage] 2008/02/25(月) 13:47:30 ID:??? >>545 君の語りを見てオナニレスてことに確信がもてたよ これらのレスは君の自己満足以外に何も生まれないよ結果としてね http://medaka.5ch.io/test/read.cgi/php/1172205352/548
549: nobodyさん [sage] 2008/02/25(月) 13:49:30 ID:??? >>547 ああ、そうか。だったら君はもう来るな。 http://medaka.5ch.io/test/read.cgi/php/1172205352/549
550: nobodyさん [sage] 2008/02/25(月) 13:52:02 ID:??? 1が名無しとなって言い訳してるくさいな http://medaka.5ch.io/test/read.cgi/php/1172205352/550
551: nobodyさん [sage] 2008/02/25(月) 13:54:58 ID:??? >>550 俺は1じゃないんだけどな。言い返せなくてそれしかいえないんだな。 それにお前がここに常駐する意味はないよな。 http://medaka.5ch.io/test/read.cgi/php/1172205352/551
552: nobodyさん [sage] 2008/02/25(月) 13:58:28 ID:??? 記念パピコ http://medaka.5ch.io/test/read.cgi/php/1172205352/552
553: nobodyさん [sage] 2008/02/25(月) 14:52:48 ID:??? コマツも軍需だよね http://medaka.5ch.io/test/read.cgi/php/1172205352/553
554: nobodyさん [sage] 2008/02/25(月) 17:26:59 ID:??? さ あ 、 も り あ が っ て ま い り ま し た http://medaka.5ch.io/test/read.cgi/php/1172205352/554
555: nobodyさん [sage] 2008/02/26(火) 10:28:32 ID:??? 1が書き込みしないと 恐ろしいほどさびれてんねw 1だけがPHPでOOPに興味があって その興味を無理矢理に広めようとしてる このスレの落胆ぶり見ればよくわかるwww http://medaka.5ch.io/test/read.cgi/php/1172205352/555
556: nobodyさん [sage] 2008/02/26(火) 12:06:28 ID:??? PHPにかぎらず、「オブジェクト指向」が一般化したと言っても、実際にはライブラリ(フレームワークを含む)が クラス化されて、プログラマはそれを使ってるという程度の話でしかないから、OOPそのものの話が盛り 上がらないのは、当然といえば当然。 http://medaka.5ch.io/test/read.cgi/php/1172205352/556
557: nobodyさん [sage] 2008/02/26(火) 14:01:10 ID:??? WebProgで勢いあるのなんてくだすれぐらいだろ http://medaka.5ch.io/test/read.cgi/php/1172205352/557
558: nobodyさん [sage] 2008/02/27(水) 22:15:02 ID:??? 何度も1のこと前向きにとらえようとしたけど やはり1が何をしたいのかよくわからん http://medaka.5ch.io/test/read.cgi/php/1172205352/558
559: nobodyさん [sage] 2008/02/28(木) 00:08:29 ID:??? OOPの勉強じゃないの? http://medaka.5ch.io/test/read.cgi/php/1172205352/559
560: nobodyさん [sage] 2008/03/01(土) 01:04:42 ID:??? 自称非営利団体の運営を本業に転換する難しさのバーチャル体験学習。 乗せられたボランティアからの不満が噴出。 ありがち。そして解散。ありがち。 http://medaka.5ch.io/test/read.cgi/php/1172205352/560
561: nobodyさん [sage] 2008/03/02(日) 15:48:10 ID:??? 私も1が必死にスレ継続させてる意味が??? 営利団体なら意味はわかりますが http://medaka.5ch.io/test/read.cgi/php/1172205352/561
562: nobodyさん [sage] 2008/03/02(日) 16:50:51 ID:??? このスレ1年以上在るのに、 1 ◆SWtzLesEmM が書き込んだことがある日数って 16日だよ。 必死どころか、やる気があるのかと言いたい。 2007 02/23 02/24 02/27 02/28 05/12 06/12 07/06 07/11 07/26 2008 01/29 02/02 02/06 02/10 02/17 02/24 02/25 http://medaka.5ch.io/test/read.cgi/php/1172205352/562
563: nobodyさん [sage] 2008/03/02(日) 20:21:37 ID:??? 暇人乙 http://medaka.5ch.io/test/read.cgi/php/1172205352/563
564: nobodyさん [sage] 2008/03/02(日) 23:43:21 ID:??? まー、ここで勉強するな、とは言わないけど、本気でやろうと思ってる人は、まず自分で本買うなりして勉強すると思うよ。 別に興味ないやつはスルーでも何でもしときゃいいと思う。 http://medaka.5ch.io/test/read.cgi/php/1172205352/564
565: nobodyさん [sage] 2008/03/09(日) 10:19:09 ID:??? >>562 1自演乙! http://medaka.5ch.io/test/read.cgi/php/1172205352/565
566: nobodyさん [sage] 2008/03/10(月) 14:48:07 ID:??? 自演度は THE END http://medaka.5ch.io/test/read.cgi/php/1172205352/566
567: nobodyさん [sage] 2008/03/17(月) 07:13:22 ID:??? 保守 http://medaka.5ch.io/test/read.cgi/php/1172205352/567
568: nobodyさん [sage] 2008/03/28(金) 02:04:42 ID:??? このスレで、今日から貴方もOOP!!!\(^o^)/ >>1 オッパッピーの間違いですよね http://medaka.5ch.io/test/read.cgi/php/1172205352/568
569: nobodyさん [sage] 2008/04/20(日) 09:34:37 ID:??? 保守 http://medaka.5ch.io/test/read.cgi/php/1172205352/569
570: nobodyさん [sage] 2008/05/24(土) 06:41:54 ID:??? 保守 http://medaka.5ch.io/test/read.cgi/php/1172205352/570
571: nobodyさん [sage] 2008/06/16(月) 13:47:07 ID:??? 難解も、難解も、オブジェクト指向 http://medaka.5ch.io/test/read.cgi/php/1172205352/571
572: nobodyさん [sage] 2008/06/17(火) 12:52:46 ID:??? スレタイの主旨からずれるけど、 やはりC言語は、一度は学んでいた方が良いな。 Javaからプログラムに入ったから、PHPのOOPでアロー演算子使うのにとても違和感あったのだけど、 Cの構造体を知って、ドットシンタックスよりアロー演算子の方が正統派と思えるようになった。 http://medaka.5ch.io/test/read.cgi/php/1172205352/572
573: nobodyさん [sage] 2008/06/17(火) 13:01:04 ID:??? どっと疲れる http://medaka.5ch.io/test/read.cgi/php/1172205352/573
574: nobodyさん [sage] 2008/06/17(火) 16:56:31 ID:??? どっと込む http://medaka.5ch.io/test/read.cgi/php/1172205352/574
575: nobodyさん [sage] 2008/07/01(火) 00:56:40 ID:??? >>573 >>574 バカアロー http://medaka.5ch.io/test/read.cgi/php/1172205352/575
576: nobodyさん [sage] 2008/07/27(日) 23:15:55 ID:??? 諸事情により、Web系のプログラミングから離れていたけれど、 また時間がとれたら舞い戻ってきます。よろしくw http://medaka.5ch.io/test/read.cgi/php/1172205352/576
577: nobodyさん [sage] 2008/08/09(土) 20:52:22 ID:??? PHPに触る機会が・・・なんで、VBばっかりなんだ・・・ http://medaka.5ch.io/test/read.cgi/php/1172205352/577
578: nobodyさん [sage] 2008/08/19(火) 00:44:43 ID:??? 保守 http://medaka.5ch.io/test/read.cgi/php/1172205352/578
579: nobodyさん [sage] 2008/08/28(木) 21:10:25 ID:??? 保守 http://medaka.5ch.io/test/read.cgi/php/1172205352/579
580: 1 ◆SWtzLesEmM [] 2008/09/02(火) 15:51:27 ID:w90kCMMO クラスの作り方(設計)について、考え方が参考になる本がありました。 http://www.amazon.co.jp/dp/4798110558/ モデルとプロセスをめぐる冒険 「モデリング」ということについて調べてみると、いろいろノウハウがあるようです。 http://medaka.5ch.io/test/read.cgi/php/1172205352/580
581: nobodyさん [sage] 2008/09/27(土) 22:23:48 ID:??? 保守 http://medaka.5ch.io/test/read.cgi/php/1172205352/581
582: nobodyさん [sage] 2008/10/06(月) 00:30:42 ID:??? 保守 http://medaka.5ch.io/test/read.cgi/php/1172205352/582
583: nobodyさん [sage] 2008/10/24(金) 23:26:54 ID:??? 保守 http://medaka.5ch.io/test/read.cgi/php/1172205352/583
584: yodobashi [sage] 2008/10/26(日) 01:15:24 ID:??? 大手ECサイトのヨドバシドットコムが、サイトリニューアルから大規模な障害を3日間... http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1220150877 506 :目のつけ所が名無しさん:2008/10/26(日) 00:47:20 大手ECサイトで、ここまで派手なリリース失敗は初めて見た。 エンジニア向けIT情報誌や関連サイトは、ぜひ取材して原因を明かして欲し いは。 http://medaka.5ch.io/test/read.cgi/php/1172205352/584
585: nobodyさん [sage] 2008/11/05(水) 20:43:48 ID:??? 保守 http://medaka.5ch.io/test/read.cgi/php/1172205352/585
586: nobodyさん [sage] 2008/11/13(木) 23:12:08 ID:??? 保守 http://medaka.5ch.io/test/read.cgi/php/1172205352/586
587: nobodyさん [sage] 2008/11/15(土) 09:19:30 ID:??? 定期的に保守してるの誰? 糞スレに対してその執念が怖いんだが。。。 http://medaka.5ch.io/test/read.cgi/php/1172205352/587
588: nobodyさん [sage] 2008/11/23(日) 22:46:31 ID:??? お前の粘着質の方が怖い http://medaka.5ch.io/test/read.cgi/php/1172205352/588
589: nobodyさん [sage] 2008/11/29(土) 11:22:40 ID:??? PHP でオブジェクト指向の設計をするための 7 つの良い習慣を身につける http://www.ibm.com/developerworks/jp/opensource/library/os-php-7oohabits/ PHP での適切な OO の習慣を身につけることによって、より安定していて、保守が容易で、拡張も容易にできるアプリケーションを作成することができます。そのためには、次のことを忘れないでください。 * 控え目である * 良き隣人である * メドゥーサを見ないようにする * 結びつきを極力弱くする * 結束性を高める * 家族の一員として扱う * パターンで考える こうした習慣を身につけ、使いこなせるようになると、皆さんはきっとアプリケーションの品質が変わったことに驚くはずです。 http://medaka.5ch.io/test/read.cgi/php/1172205352/589
590: nobodyさん [sage] 2008/11/30(日) 22:51:36 ID:??? 内容は否定しないが、その書き方はどうかなと思うな。 英語の翻訳だからなのかな。 「メドゥーサを見ないようにする」なんて飛躍した比喩表現では イメージつかないだろw http://medaka.5ch.io/test/read.cgi/php/1172205352/590
591: nobodyさん [sage] 2008/11/30(日) 23:12:38 ID:??? http://phpspot.org/blog/archives/2008/11/php_7_1.html パクりblog乙 http://medaka.5ch.io/test/read.cgi/php/1172205352/591
592: nobodyさん [] 2008/12/01(月) 12:13:27 ID:YUzphIUV >>589 メデューサの項目でインタフェースを使う意義って何? ファクトリーパターンの利点しか説明してないような気がするんだが http://medaka.5ch.io/test/read.cgi/php/1172205352/592
593: nobodyさん [sage] 2008/12/02(火) 01:29:02 ID:??? >>591 広告の方が多いってどうなんだよ 1:4で広告じゃねーか http://medaka.5ch.io/test/read.cgi/php/1172205352/593
594: nobodyさん [sage] 2008/12/04(木) 18:30:24 ID:??? DIコンテナとかどうなのか http://medaka.5ch.io/test/read.cgi/php/1172205352/594
595: nobodyさん [sage] 2008/12/14(日) 06:43:35 ID:??? オブジェクト指向のカンタンな例 <?php class A { function foo() { echo 'hello <br>'; } } $a = new A(); $a->foo(); $b=new A(); $b->foo(); ?> http://medaka.5ch.io/test/read.cgi/php/1172205352/595
596: nobodyさん [sage] 2008/12/15(月) 02:03:44 ID:??? 簡易なMVCモデルのサンプルってないのかなぁ。 フレームワークを作るとか、フレームワークを使うとかじゃなくてさ。 考え方を学ぶためにみてみたいんだけど。 過去ログにあるように、つい、MVモデルになってしまうもんで。 http://medaka.5ch.io/test/read.cgi/php/1172205352/596
597: nobodyさん [sage] 2008/12/15(月) 03:35:20 ID:??? 巷に星の数ほどあるだろ http://medaka.5ch.io/test/read.cgi/php/1172205352/597
598: nobodyさん [sage] 2008/12/15(月) 12:27:44 ID:??? Googleで、 簡易なMVCモデル と検索させる ttp://www.google.com/search?client=safari&rls=ja-jp&q=簡易なMVCモデル&ie=UTF-8&oe=UTF-8 ドゾ... http://medaka.5ch.io/test/read.cgi/php/1172205352/598
599: nobodyさん [age] 2008/12/16(火) 10:49:27 ID:??? 結構前の話だけど、>>488-489へのレスってついてるのかな? 過去ログ読み直してみても、何処が批判されているのかが分からん。 Viewはこれでいいと思うのだが。 http://medaka.5ch.io/test/read.cgi/php/1172205352/599
600: nobodyさん [age] 2008/12/16(火) 10:56:49 ID:??? http://www.zend.co.jp/tech/index.php?cmd=read&page=%A5%B3%A1%BC%A5%C7%A5%A3%A5%F3%A5%B0%BB%D8%BF%CB%2F%A3%B4%A1%A5MVC ひょっとして、「Viewではhtml出力をしてはいけない」という考えを示している ということなのか? html出力は別のクラスに任せるべきで、Viewはそのクラスのインスタンスの生成 と実行までを行うべきだという視点で批判してるとか。 http://medaka.5ch.io/test/read.cgi/php/1172205352/600
601: nobodyさん [sage] 2008/12/16(火) 11:17:25 ID:??? はい?批判ってどれ? http://medaka.5ch.io/test/read.cgi/php/1172205352/601
602: nobodyさん [age] 2008/12/16(火) 12:52:53 ID:??? >>601 批判している書込みは>>479です。 「に」のサンプルが、(コーディングにかかわるルール以外で) MVCの設計はこれで良いのかがあいまいなまま終わってる気がします。 http://medaka.5ch.io/test/read.cgi/php/1172205352/602
603: nobodyさん [sage] 2008/12/16(火) 13:03:16 ID:??? 気になってる批判は>>469もだな。そして>>471となっているが、そのレスが 無くておわってないかい? http://medaka.5ch.io/test/read.cgi/php/1172205352/603
604: nobodyさん [sage] 2008/12/16(火) 19:38:24 ID:??? よくわかんないんだけど、OOPとMVCって両立できるの? http://medaka.5ch.io/test/read.cgi/php/1172205352/604
605: nobodyさん [sage] 2008/12/16(火) 19:50:24 ID:??? MVCをOOPで実現するんだろw http://medaka.5ch.io/test/read.cgi/php/1172205352/605
606: nobodyさん [sage] 2008/12/17(水) 01:23:14 ID:??? これどうなの? ttp://www13.plala.or.jp/naka_jima/php/chapter12.html http://medaka.5ch.io/test/read.cgi/php/1172205352/606
607: nobodyさん [sage] 2008/12/17(水) 01:36:07 ID:??? どうって何が? http://medaka.5ch.io/test/read.cgi/php/1172205352/607
608: nobodyさん [sage] 2008/12/17(水) 03:42:22 ID:??? MVCだと必ずフレームワークを使わなければならないわけでもないよね。ちがうの? それとも、非常に単純なクラス構成でMVCを実現しようという考えが間違いとか? http://medaka.5ch.io/test/read.cgi/php/1172205352/608
609: nobodyさん [sage] 2008/12/17(水) 04:51:02 ID:??? 別にいいんじゃ? http://medaka.5ch.io/test/read.cgi/php/1172205352/609
610: nobodyさん [sage] 2008/12/17(水) 10:09:45 ID:??? >>606見たんだけど、MVCってこんななの? View や Model 1つに対して1ファイルみたいだけど、ファイル量半端ないことになりそう。 http://medaka.5ch.io/test/read.cgi/php/1172205352/610
611: nobodyさん [sage] 2008/12/17(水) 14:15:45 ID:??? DBの形式や最終的な見せ方によって、ファイル数は変わるんじゃないの? でも、MVCってわりとファイル多めだよな! 1ファイルのコード量、大して多くないけど http://medaka.5ch.io/test/read.cgi/php/1172205352/611
612: nobodyさん [sage] 2008/12/17(水) 15:06:27 ID:??? ファイルが多めなのが嫌なら1ファイル内に複数書けばいいじゃない http://medaka.5ch.io/test/read.cgi/php/1172205352/612
613: nobodyさん [sage] 2008/12/17(水) 17:53:39 ID:??? OOPそのものをやろうとするとクラスやファイル量が多くなるからね。 汎用性を考えて作ろうとするとなおさらだ。それはしかたがないのかも。 そこをあえて、フレームワークや外部のモジュールなどを使わずに 非常にクラス数を少なくしてやってみたいなと思うんだけどね。 MVCの理解の一環として。 http://medaka.5ch.io/test/read.cgi/php/1172205352/613
614: nobodyさん [sage] 2008/12/17(水) 20:20:24 ID:??? やってみればいいのでは? http://medaka.5ch.io/test/read.cgi/php/1172205352/614
615: nobodyさん [sage] 2008/12/18(木) 01:34:16 ID:??? <?php class Framework{ // コントローラー public function controller(array $inp){ $model = $this->model($this->di('Action', $this->di('Action_Mapper',$inp)); $this->view($model); } // モデル protected function model(Action $actions){ return $action->do(); } // ビュー protected function view($model){ print ($this->di('View_Helper', array($model)); } // DIコンテナ protected function di($class, $options){ return new $class($options); } } class HelloWorld extends Frameworkd{} App::controller($_GET); http://medaka.5ch.io/test/read.cgi/php/1172205352/615
616: nobodyさん [sage] 2008/12/18(木) 01:36:48 ID:??? なんじゃそりゃ http://medaka.5ch.io/test/read.cgi/php/1172205352/616
617: nobodyさん [sage] 2008/12/18(木) 01:37:24 ID:??? 最後の一行間違い http://medaka.5ch.io/test/read.cgi/php/1172205352/617
618: nobodyさん [sage] 2008/12/18(木) 08:21:41 ID:??? せめてクラスは3つ以上にするべきだろ。 最低限といっても、ファイルを読み込んで表示とか、書き込みとかの処理まで 出来る機能を持ったほうがコントローラとビューの違いが明確に分かりやすく なると思うんだけど。 http://medaka.5ch.io/test/read.cgi/php/1172205352/618
619: nobodyさん [sage] 2008/12/18(木) 10:48:40 ID:??? これはMVCどこがやるのが妥当か? ってところで迷う。 時々、曖昧なのが出てきちゃう。 http://medaka.5ch.io/test/read.cgi/php/1172205352/619
620: nobodyさん [sage] 2008/12/18(木) 11:48:41 ID:??? >>619 ここで事例を通じて具体的な意見を交わしていけばどうかな?」 例えば・・・ 掲示板 ■コントローラ:処理の内容を判断するクラス ・プログラムが実行された時、一番最初に実行される ・POSTの値をみて、以下の処理にてどれに該当するかを判断する ・データを表示する ・データを書込む ・編集用のフォームを表示する ■ビュー:htmlのレイアウト表示を担当するクラス ・以下のメソッドを持つ ・データをhtmlで表示する ・データ編集用htmlを表記する ■モデル:データファイルを管理するクラス ・ファイルの読み込み、書込みをする ・外部とは1件分のデータはBBSLineクラスでやりとりする http://medaka.5ch.io/test/read.cgi/php/1172205352/620
621: nobodyさん [sage] 2008/12/18(木) 12:24:15 ID:??? >>620 『■コントローラ:処理の内容を判断するクラス 』の > ・データを表示する > ・データを書込む 『 ■モデル:データファイルを管理するクラス 』の > ・ファイルの読み込み、書込みをする って、意味が重複しているような感じがするのですが... ならば、 ■コントローラ:処理の内容を判断するクラス ・モデルからデータを受け取る ・モデルにデータを渡す とかでは、おかしいですか? http://medaka.5ch.io/test/read.cgi/php/1172205352/621
622: nobodyさん [sage] 2008/12/18(木) 12:52:00 ID:??? >>621 >>620じゃないけど。 ・データを表示する ・データを書込む ・編集用のフォームを表示する 実際に上記の作業をするのは View と Model だよ。Controllerがするわけじゃない。 コントローラーはどれがリクエストされたかを判断して、適切な Model と View を呼び出す。 http://medaka.5ch.io/test/read.cgi/php/1172205352/622
623: nobodyさん [sage] 2008/12/18(木) 16:39:54 ID:??? >>469は具体的に何処のコードを批判しているのかが分からないので どなたか解説を頼みます。 http://medaka.5ch.io/test/read.cgi/php/1172205352/623
624: nobodyさん [sage] 2008/12/18(木) 20:10:31 ID:??? MVCモデルでM同士で連携することってあり? それとも必ずC経由? C経由の場合、Mをなるべく疎結合になるように細分化してると、 Cの各Actionに書くロジック量が半端なく多くなってくるんだよね。 (Aデータを取ってきてBデータを取ってきてBをCバリデータに通してAとBを基にDを作成して・・・みたいな) 一つのAction内にロジックが増えるのもどうかと思うし、それって新しいモデルじゃんという気もしてこないでもない。 http://medaka.5ch.io/test/read.cgi/php/1172205352/624
625: nobodyさん [sage] 2008/12/18(木) 20:23:33 ID:??? >>624 俺はM同士で連携するかたちでも良いと思うけどね。 CからMを見た場合、あるまとまった処理単位でメソッドを呼び出す形であることが 重要だと思うから。 CがMを使うときは必ずメソッドA呼び出してメソッドB、メソッドCを実行しなければならない。 さらに、そういう3連呼び出しがCの中に何箇所か書かれているなんていうのは再利用性などが 悪くなると思うから。 http://medaka.5ch.io/test/read.cgi/php/1172205352/625
626: nobodyさん [sage] 2008/12/19(金) 16:35:55 ID:??? 試しに掲示板をMVCでやったら、なんかやっとそれっぽくなった。 http://medaka.5ch.io/test/read.cgi/php/1172205352/626
627: nobodyさん [sage] 2008/12/19(金) 19:23:16 ID:??? >>626 うpきぼん http://medaka.5ch.io/test/read.cgi/php/1172205352/627
628: nobodyさん [sage] 2008/12/20(土) 14:28:47 ID:??? >624 変化する内部状態を持つモデル同士で連携させると見通しが悪くなる。 生成してから、(観察される)内部状態が変化しないようなモデルはどこから呼んでもそれほど大きな問題はない。 オブジェクトの生成期間中に(観察される)内部状態が変化するようなモデルは、C直轄にしといた方がいい。 http://medaka.5ch.io/test/read.cgi/php/1172205352/628
629: nobodyさん [sage] 2008/12/20(土) 14:34:18 ID:??? 生成期間→生存期間 なんか寝ぼけてた。 要は変化する「状態」を持っているもの全てはCの管理下に置いておいた方がいいってこった。 「状態」が無いもの(生成時にファイルからデータをロードしてそれっきり、とか)はどこにあったって構わない。 インスタンスの生成を行なうクラスは自分ルールでもいいからある程度絞っておかないと混乱すると思うけどな。 http://medaka.5ch.io/test/read.cgi/php/1172205352/629
630: nobodyさん [sage] 2008/12/20(土) 15:34:43 ID:??? 変な質問だけど、OOP での Validator ってのがよくわかんねえ。 is_numeric(); とかをModel内にべた書きしないで、Validatorオブジェクトを通じて、変数の内容を確認すればいいの? $str = 'string'; $valid =& new Validator(); $valid->isStr($string); みたいな感じで。 BaseValidator みたいな基本的なチェックをするクラスを作って、継承した先で複雑なチェック用のメソッドを実装させればいいのかな。 http://medaka.5ch.io/test/read.cgi/php/1172205352/630
631: 630 [sage] 2008/12/20(土) 15:37:54 ID:??? 引数間違えてる。最後の行。 $valid->isStr($str); ね。まぁ、別に問題ないが。 http://medaka.5ch.io/test/read.cgi/php/1172205352/631
632: nobodyさん [sage] 2008/12/20(土) 15:54:47 ID:??? 問題はありまくりだろ http://medaka.5ch.io/test/read.cgi/php/1172205352/632
633: nobodyさん [sage] 2008/12/20(土) 16:42:14 ID:??? >630 ttp://gist.github.com/38261 俺はValidatorクラスはコントローラ単位で実装してる。「入力値の検証」なのだから、コントローラの責任。 Validatorだけ独立させるのはコードの見通しを良くするためであり、責任はあくまでコントローラにある。 ただ、実際にそっからコールするのはModelのメソッド。何が許可されるかを知ってるのはだいたいModelだからな。 たとえば受け付ける値が日付なら、そっから日付クラスのvalidateメソッドを呼び出す(MyDate::validate($string))。 POSTされる中に列挙型(<select>から送られるような、選択肢が限られているもの)とかがあった場合にこの構成は滅茶苦茶強い。 <select>のためのデータ生成とか、送られたvalueから画面表示用の文字列(「〜モード」とか)への変換を一箇所に集められる。 あと、文字列が決まったフォーマットになっているか調べる場合とかな。 is_strとかctype_stringとかstrlenだけで検証が終わるものはvalidatorクラス内に直書きする。 validateNumericとかvalidateStrとか書くよりその方が分かりやすい。 http://medaka.5ch.io/test/read.cgi/php/1172205352/633
634: nobodyさん [sage] 2008/12/20(土) 17:07:58 ID:??? >>633 ものすごく丁寧にありがとう。 まだぼんやりとしかわからないけど、サンプルコードを読み解いて、いろいろ試してみる。 http://medaka.5ch.io/test/read.cgi/php/1172205352/634
635: nobodyさん [sage] 2008/12/20(土) 17:13:17 ID:??? >>633 >「入力値の検証」なのだから、コントローラの責任。 「検証する」んじゃなく「検証させる」のが仕事じゃないの? ここでいう入力値の検証って例えばどんなこと言ってる? 3行目で >何が許可されるかを知ってるのはだいたいModelだからな。 って書いてるってことは、なにか、Modelに関係ないものを想定してると思うんだけど。 http://medaka.5ch.io/test/read.cgi/php/1172205352/635
636: nobodyさん [sage] 2008/12/20(土) 18:07:36 ID:??? >635 大雑把に言うと、処理を始める前に可能なパラメータの検証全般。 純粋に入力値だけを見て判定できるものだな。システムや環境の状態を見なくとも判定できるエラーを出す役割。 処理を始めないと分からないもの(DBに指定されたエントリーがあるかとか)は、バリデーションでは扱わない。 DBにこの値があった場合はクッキーにこれが無いといけない…みたいなのも対象外。 日付として「'9999-12-31'」が指定されてもバリデーションでは引っ掛けない。これは有効な入力。 「'2008-13-45'」はバリデーションでエラーとして引っ掛ける。この日付が有効になる事はあり得ないから。 メールアドレスが正しいフォーマットかをチェックするのはバリデーションで、それが有効なメールアドレスかをチェックするのはモデル。 ユーザーIDとして正しいフォーマットならばバリデーションは通るが、当該ユーザーがいない場合モデルがエラーを出す。 http://medaka.5ch.io/test/read.cgi/php/1172205352/636
637: nobodyさん [sage] 2008/12/21(日) 00:53:43 ID:??? >>636 なんとなく分かるけど、 例えばそれだと「2008-13-45は日付(のつもり)」ってことを コントローラが知っとかないといけないってことだよね? あと、日付が必要なくなった、とかいうときは コントローラーを変更しないといけないってことにならない? なんか拘ってるようでアレだけどお勉強スレってことで許してw http://medaka.5ch.io/test/read.cgi/php/1172205352/637
638: nobodyさん [sage] 2008/12/21(日) 00:57:41 ID:??? って、もしかして、リクエストとして渡ってくるものを想定してるのかな。 hoge.php?date=20081231 とか。 http://medaka.5ch.io/test/read.cgi/php/1172205352/638
639: nobodyさん [sage] 2008/12/21(日) 12:32:43 ID:??? >637 「コントローラ」の指している範囲が俺と違う気がする。 俺はディスパッチャ(処理の振り分け)部分じゃなくて、そこから振り分けられる先のコントローラを指している。 ぐぐったが、「アクション」としてクラスにして丸ごとコントローラから切り離す文化圏もあるようだな。 「日付のつもりで送られてくる文字列がある」という事実は、ディスパッチャは(たいていの場合)知らない。 が、コントローラ(アクション)は知っている。だって知らないと日付具象モデルに処理を引き渡しようがないからな。 Cにはどの道変更が入る。リクエストをモデルに引き渡すのが仕事だからな。 「日付がどこからどう渡ってくるか」はCの管轄であってMじゃない。Mはそれを知っていてはいけない。 Mは「日付を渡されたらどうする」だけ知っていればよく、実際問題どこに日付があるかはCが隠蔽すべき。 たとえば、日付指定でDBからレコードを取っていたのを、「無指定時は今日と見なす」と変更したとする。 この場合は、Cを「日付省略時は現在の日付でMを呼び出す」ように変更し、Mには触れないのが正しい。 「省略時は日付を無視して過去のレコードを全取得する」という場合は、データ取得ロジックが変更なのでまずMは変わる。 制御の構造、呼び出しインターフェイスも変わるのでCも変わる。 http://medaka.5ch.io/test/read.cgi/php/1172205352/639
640: nobodyさん [sage] 2008/12/21(日) 12:37:44 ID:??? まあ実際は、日付省略時のMの挙動を変えるだろうけどな。 >638 入力値以外のもの(DB内の値とか処理結果)の検証は当然モデル。 というか、そういうのは一般にはバリデーションとは言わずアサーションと呼ぶ。 http://medaka.5ch.io/test/read.cgi/php/1172205352/640
641: nobodyさん [sage] 2008/12/21(日) 13:45:12 ID:??? >>639 Cは振り分けだけが仕事だと思ってたんだけど。 その先にさらに C があることなんてあるのか。 サブコントローラーみたいな感じ? http://medaka.5ch.io/test/read.cgi/php/1172205352/641
642: nobodyさん [sage] 2008/12/21(日) 14:51:26 ID:??? >641 やっぱ、そこか。 例えばブログの場合、エントリー群を司るモデルや、タグクラウドを司るモデルができる。これは自明だな。 で、データを受け取って画面を表示するだけの、ごく単純なビューがいる。これも自明。 で、それら呼び出してページのデータを作る、という「データの統合」を司るクラスが必要になる。 これをMVCのうち、MとCのどっちに置くかの問題。 MVC、MVCって言ってるけど、本質的には4層なんだよ。 処理の振り分けに1層を割くならば、4層なくてはならない。 処理の振り分け=呼び出すCの決定(ディスパッチャ)→どのMを呼び出すかを制御する(コントロール) →データを実際に扱う(モデル)→表示(ビュー)、となる。 実際のフレームワークだと、RailsやZendはDispatcherが振り分けを担当し、制御はコントローラが執っている。 (だから、おまいの目から見れば、コントローラは仕事をやりすぎに見えるはず) SymfonyやCakeだとControllerがディスパッチを担当し、制御はActionが執っている。 CodeIgniterだとディスパッチは単一のエントリポイント(リクエストを受けるphpファイル)であるindex.phpが行なって、制御はCが行なっている。 http://medaka.5ch.io/test/read.cgi/php/1172205352/642
643: nobodyさん [sage] 2008/12/21(日) 15:35:51 ID:??? >>642 >たとえば、日付指定でDBからレコードを取っていたのを、「無指定時は今日と見なす」と変更したとする。 >この場合は、Cを「日付省略時は現在の日付でMを呼び出す」ように変更し、Mには触れないのが正しい。 これって制御じゃなくてロジックだからモデル的仕事じゃねぇの? http://medaka.5ch.io/test/read.cgi/php/1172205352/643
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 251 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s