PHPでOOP (894レス)
上下前次1-新
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
もっと手っ取り早く使えるフレームワークをつくるために勉強すればいい
657: 2009/02/02(月)15:06 ID:??? AAS
元々目的としては自サイトで使うための軽量フレームワークを作るために勉強してたの。
で、既存のフレームワークのマニュアルとかソースを参考にしながら作ってたんだけど、取り込むつもりが逆に呑まれた形。
658: 2009/02/02(月)20:06 ID:??? AAS
凄く難解なソースを引き継ぎさせられて、途方にくれかかった。
で、市販のモジュールを使うなどして0から作り直すなどの方法を
模索したが、結局は引継ぎしたソースを解読して手を加えるのが
楽で、早い道であることが分かった。みたいな話かな?w
PHPではないが、俺はちょうどこんな感じの体験をしたことがあるw
659: 2009/02/03(火)00:06 ID:??? AAS
まぁ、たぶんそんな感じ。
要するにフレームワークの魅力に気付いたわけですよ。
660: 2009/02/03(火)01:52 ID:??? AAS
先に気づいてからやれば良かったな
661: 2009/02/04(水)08:03 ID:??? AAS
そういうのは簡単に気づけないだろう。
プログラムは体感して分かっていくものなのだから。
662(1): 2009/02/04(水)21:38 ID:??? AAS
俺としては魅力に気付けただけでも大きな進歩だ。
自作云々は別にして。
663: 2009/02/05(木)22:29 ID:6GWaaOT6(1) AAS
あけおめ
664: 2009/02/06(金)07:54 ID:??? AAS
では、その気づいた魅力的な部分をここなどで紹介してみるというのはどうよ?
PHPでOOPのスレの趣旨に添ってると思うし、他の人の意見を聞いて
参考になる部分もあると思うのだが。
665: 2009/02/07(土)01:12 ID:??? AAS
>>4
宣伝乙
666: [age] 2009/02/09(月)20:26 ID:??? AAS
えらく昔の書き込みにレスしてるな。
667(2): [age] 2009/02/12(木)07:33 ID:??? AAS
フレームワークの魅力についてまとめてみるか?
668: 2009/02/12(木)09:08 ID:??? AAS
どうぞ
669: 2009/02/12(木)15:59 ID:??? AAS
>>667
wikiにしてもらえるなら俺も手伝う
670: [age] 2009/02/12(木)20:11 ID:??? AAS
いや、俺はそんなに文章がかけるほど知識は無い。申し訳ないが、サポートに回る
671: 2009/02/12(木)20:25 ID:??? AAS
なぜにフレームワークの魅力をまとめようと?
672: 662 2009/02/12(木)20:56 ID:??? AAS
>>662 ≠ >>667
だからね。
俺は人に語れるほどまだ理解してないから。
673: 2009/02/12(木)20:59 ID:??? AAS
なんだ教えて君か
674: [age] 2009/02/12(木)21:37 ID:??? AAS
おまえもな
675: 2009/02/12(木)22:00 ID:??? AAS
サポートするといってるんだから、教えてじゃないだろw
676(1): 2009/02/13(金)20:54 ID:??? AAS
外部リンク:q.hatena.ne.jp
677: 2009/02/15(日)23:40 ID:??? AAS
>>676を読んでみて、PHPに限らず、ASP.NETを体感してみると、フレームワークの
メリットやデメリットがみえてくるんじゃなかと感じた。
あれは、ポストバックとか独自の理論があって、それを学ばないと使えるようになれない。
しかし、ページをまたがってデータの受け渡しをする際は、非常に便利な機能であり、
使いこなせるようになると、生産性が向上する。
678: 2009/02/16(月)00:05 ID:??? AAS
一問一答形式でwikiでも作るか
679: 2009/02/16(月)00:44 ID:??? AAS
visualstudioが優秀すぐる
680(1): 2009/02/16(月)11:09 ID:IOY0ae9e(1) AAS
Java とか C#やったほうが飲み込みは早くなるのかな。
でも両者とも動かせるサーバって高いからなぁ。
Web以外にも用途はあるけど。
681: 2009/02/16(月)19:31 ID:??? AAS
>>680
いろいろな言語に触れてみると、その分視野は広くなることだろう。
共通して実装している機能を見ることで、OOPの概念をつかんだり
出来るはずだし。
しかし、広く浅くにとどまっていると、何も作れないで終わるので、
物を作る際は、一つの言語に絞り込んでいた方が良い。
なので、java や C# においてはローカルで稼動させるのにとどまらせて
おいたらどうかな?ASP.NET だと、Webアプリでもローカルでテスト動作
させる環境が Express にもついてるし。
682: 2009/02/16(月)23:33 ID:??? AAS
ウェブアプリの範囲なら、どの言語のどのフレームワークでも大差ないよ。
ASP.NETは、デスクトップアプリケーションからのアプローチなんで、これだけちょっと勝手が違うけど。
プログラミングを仕事にするなら、最初は型ありの言語をやった方がいいと思う。
JavaとかC#が理解出来れば、PHPやPerlはすぐに分かる。
683(1): 2009/02/17(火)12:38 ID:??? AAS
でも、perlってすぐ忘れちゃうよな...
684: 2009/02/17(火)20:53 ID:??? AAS
>>683
それはそれで良いのではないかと思っている。
perlのモットーがあわないのであれば、PHPを使うで良いと思うし。
685: [age] 2009/02/23(月)20:40 ID:??? AAS
PHP では OOP を学べないという意見があるが、結論だけ
いうのではなく、その理由の部分を述べていくといいかもね。
686: 2009/02/23(月)21:35 ID:??? AAS
別に学べるのでは?
687: 2009/02/23(月)22:27 ID:??? AAS
ん、どこかにPHPでは学べないと書いてあるのかな?
個人的には、純粋にOOPを学びたいのであれば別の言語がいいかなーとは思う。
理由は、Webは身近だし使い慣れてると言えるかもしれないが
PHP以外のHTMLやらJSやらHTTPプロトコル等知らなければいけない知識が多くあるから。
その辺を知っていれば問題はないと思うけどね。
688: 2009/02/23(月)23:55 ID:??? AAS
オブジェクト指向を本格的に勉強したければ、GUIのプログラムを書いた方がいい。ウェブアプリじゃオブジェクト指向が出る幕はない。
689(1): 2009/02/24(火)02:09 ID:??? AAS
出る幕はあると思うが、最終的にフレームワークを構築することになると思う。
いきなりWEBフレームワークを作ることは難しいので、
実際に存在するフレームワークのソースを追いかけ、参考にしながら、
オレ的フレームワークを組み上げることで、様々な知見を得ることができると思う。
また、これらのフレームワークはたいてい、何らかのデザインパターンやアークテクチャパターンが使われているため、併せてこれらも学習する必要があると思う。
690: 2009/02/24(火)12:23 ID:??? AAS
WEBアプリでもActionScript3なら、バリバリOOPだYO!
691(1): 2009/02/24(火)12:40 ID:??? AAS
まあ、いつかはサーバサイドはAPIを提供するだけで、クライアントのUIはFlashとかJavaScriptに任せるような時代がくるのかも。
692(1): 2009/02/24(火)19:41 ID:??? AAS
>>691
エンタープライズならそんなケースいくらでもあるだろw
693(1): 2009/02/24(火)20:31 ID:??? AAS
>>689
俺的フレームワークなんて作らないほうがいい。
自己主張ばかり強い勘違いになりがちだし、遠回り。
良い先人の手本を眺めるほうがよっぽど効率的だわ。
694: 2009/02/24(火)20:35 ID:??? AAS
>>693
ホントにそうだとしたらとっくに淘汰されて現状のフレームワークの乱立状態にはならないと思うが
695: 2009/02/25(水)06:21 ID:??? AAS
>>692
聞いたことないな。そんなことするぐらいなら、Windowsアプリケーションなり、Accessなりで直接DBを参照するから。
696: 2009/02/26(木)22:25 ID:??? AAS
クライアントマシンの性能がこれだけアップしているのに、
クライアントマシンの性能を利用しないなんて
どれだけ無駄なんだかw
697(1): 2009/02/26(木)23:57 ID:??? AAS
ぶっちゃけサーバサイドのフレームワークは制作の効率のためであって
性能うんぬんは考えてないんだよな
698(2): 2009/02/27(金)00:54 ID:??? AAS
勉強不足で申し訳ないんだが、制作の効率より性能うんぬんを優先したフレームワークを教えて欲しい
699: 2009/02/27(金)05:45 ID:??? AAS
つーか開発効率は性能に含まれるだろう
700: 2009/02/27(金)06:00 ID:??? AAS
は?
701: 2009/02/27(金)13:31 ID:??? AAS
699 名前:nobodyさん[sage] 投稿日:2009/02/27(金) 05:45:51 ID:???
つーか開発効率は性能に含まれるだろう
699 名前:nobodyさん[sage] 投稿日:2009/02/27(金) 05:45:51 ID:???
つーか開発効率は性能に含まれるだろう
699 名前:nobodyさん[sage] 投稿日:2009/02/27(金) 05:45:51 ID:???
つーか開発効率は性能に含まれるだろう
699 名前:nobodyさん[sage] 投稿日:2009/02/27(金) 05:45:51 ID:???
つーか開発効率は性能に含まれるだろう
699 名前:nobodyさん[sage] 投稿日:2009/02/27(金) 05:45:51 ID:???
つーか開発効率は性能に含まれるだろう
省2
702: 2009/02/27(金)13:31 ID:??? AAS
>>698
性能を求めるならフレームワークなんて使うなって話
703(1): [age] 2009/02/27(金)19:50 ID:??? AAS
>>698が言ってる「性能」って何?
これは釣りなのか?
704: 2009/02/27(金)20:00 ID:??? AAS
「やあ、とりあえず性能の一番いいやつを一つくれないか。」
「今日はCakePHPがお勧めとなっております。」
「じゃあ、そいつをくれ。」
「かしこまりました。」
705(1): 2009/02/27(金)20:35 ID:??? AAS
>>703
なんで俺に絡むんだよ。
たった1個上のレスも読めないのか?
釣りなのか?
706: 2009/02/28(土)01:39 ID:??? AAS
>>705
何言ってるんだ?
1個上のレスを読んでるから性能って何って話だよな
707: 2009/02/28(土)02:02 ID:??? AAS
>>697に聞いてくれよ
俺は知らんよ。
使われた言葉返しただけなのにw
708: 2009/02/28(土)04:26 ID:??? AAS
1ファイルにphp+html+css+jsべた書きが催促
709: 2009/02/28(土)08:03 ID:??? AAS
SEO的に最悪だな
710: 2009/02/28(土)08:44 ID:??? AAS
出力されるHTMLがSEOに合ったものなら、途中経過は関係ない。
711: 2009/03/04(水)21:56 ID:vdYaMRth(1) AAS
PHPでMVCってModel, View, Controllerの3クラスに
それぞれ適当な補助クラスをコンポジる感じでok?
712: 2009/03/04(水)22:30 ID:??? AAS
ng
713(1): 2009/03/04(水)22:51 ID:??? AAS
検索するとViewは普通にHTML部分にしてクラスにしない奴が多いが…
それはどうだろう…
714: 2009/03/04(水)23:44 ID:??? AAS
>>713
別にありじゃない?
PHPTALってのもあるし
厳密には、TALに値渡す必要があるので、Viewが純粋なHTMLのみという訳ではないけど
715: 2009/03/05(木)10:13 ID:??? AAS
未だにコントローラが何者なのかわからねえw
コンポーネントってのもよくわからんし。
716: 2009/03/05(木)11:05 ID:??? AAS
基礎中の基礎すぎるだろ
717: 2009/03/05(木)12:25 ID:??? AAS
コントローラの役割そのものがわからないというよりも『どこまでがコントローラがやるべきことなのか?』ってことかな。
ビューとコントローラで迷うことはないけど、モデルとコントローラのどっちに書くべきかな、って言うのが多い。
まぁ、経験で補うもんだろうね。
718: 2009/03/05(木)17:40 ID:??? AAS
100%中の100%!!!!!!!!!!
byとぐろ兄弟
719(1): 2009/03/06(金)04:31 ID:??? AAS
ってか3つに分けようとするから分からないんじゃない?
720: 2009/03/06(金)14:28 ID:??? AAS
>>719
なんだ君も教えて君か
721: 2009/03/10(火)12:40 ID:??? AAS
アセクサ
722: 2009/03/29(日)09:52 ID:??? AAS
アホクサ
723: [age] 2009/04/06(月)08:51 ID:??? AAS
保守しときます。
724: 2009/04/06(月)09:51 ID:??? AAS
保守要らない板だから・・
725: 2009/04/08(水)23:43 ID:??? AAS
PHP研究所って全然PHP関係の書籍ださねーな。
社内だけで技術囲ってんじゃねーぞ。
726: 2009/04/08(水)23:49 ID:??? AAS
全然おもしろくない
727(3): 2009/04/10(金)03:54 ID:4A05Vd6N(1/3) AAS
オブジェクト指向で、MVCのMとCがいまいちつかめない
処理はModel、ViewとModelを制御するController
ってある。
例えば、ある条件を満たしたときに、データファイルからデータ一覧をリスト形式にしたくて、
・データ1
・データ2
・
みたいにずらーと繰り返しして表示するとき、
modelには、ある条件を満たしたしたかどうかを判断する処理を、
viewには<div>やら<ul><li>を、
省6
728(1): 727 2009/04/10(金)03:59 ID:4A05Vd6N(2/3) AAS
ごめん、やっぱりつづかない。
非常にわかりにくいかもしれないけど
こういうときって、素直にcontrollerにwhile処理いれとけばいいのかな。
でも、controllerに制限させるものが二、三個ならいいけど
もっとwhile処理するものが多くなれば、
処理がかぶってくるんだけど、
それが気持ち悪くて・・
なにか上手い回避方法を教えてください
729: 2009/04/10(金)04:08 ID:4A05Vd6N(3/3) AAS
で、一応考えたのが、
viewにはhtmlタグだけを、
modelには条件処理とwhile処理を、
このwhile処理の中にviewで書いたhtmlタグを
放り込んで繰り返し処理。
controllerで、このmodelに引数入れてやれば
このmodelの変数には、
条件処理された結果と、
htmlタグつきのデータ一覧が格納されて、
表示される。
省3
730: 2009/04/10(金)04:22 ID:??? AAS
MVCまだ早いんでないかな
731(1): 2009/04/10(金)09:37 ID:??? AAS
Model はデータをどこからともなく持ってくる。
View にはテンプレートエンジン使って View の中でループさせる。
Controller は Model に「データ持ってこい」と頼んで、受け取ったデータを今度は View に渡して「表示しろ」と頼む。
View は渡されたデータをぶん回して表示する。
「頼む」ってのは メソッドを呼び出すことを指す。
嘘教えてたら許して
732(1): 2009/04/10(金)10:04 ID:??? AAS
>>731
というとつまり、もしも動的にデータを一覧表示させたいときなんかは、
”データ持ってこいとModelに頼む→Viewに渡して表示させる”
という一回の表示を、whileなりなんなりを使って何回も繰り返す操作を
Controllerがやるってことでいいのか。
733: 2009/04/10(金)10:51 ID:??? AAS
date.txtにdate1,date2,date3,date4ていうデータが入ってたとき、
"2"という条件を与えたときに、
date1<br>
date2<br>
"4"という条件を与えたときに、
date1<br>
date2<br>
date3<br>
date4<br>
という一覧を行いたい場合。
省13
734(2): 2009/04/10(金)12:01 ID:??? AAS
>>732
まあ作り方によるんだろうけど……
ループでViewを何回も呼び出すよりも、例えば配列でデータを一度に全部渡しちゃって、Viewにループしてもらったほうがスッキリしない?
Viewの中にPHPの生のコードが入るのを避けたいなら、先に挙げたテンプレートエンジン使うとかすればいいし。
735: 2009/04/10(金)12:17 ID:??? AAS
>>734
たしかにそうか
ループするデータ表示のデザインて単純なものが多いだろうし
デザイン変更するときも、viewにphpのコードが入っててもそこまで苦にはならないか。
テンプレートエンジンどれがいいか決めれないし、
controllerにphpコードの種類がいっぱい入ってくると見にくいし長くなりそうだから
とりあえずはviewでループさせる方法にしてみるわ
あんがと
736(2): 2009/04/10(金)12:48 ID:??? AAS
>>727
レス全部読んでないから、的外れになるかもしれないけど、
MVCの基本コンセプトは『プログラムの着火点(エントリーポイント)は、URLである』
という考え方が中心になっているらしいよ
つまり、どんなWEBアプリもそのプログラムにアクセスしないと何も起こらないという発想。
そこから更に考えを発展させて、URLの一部にメソッドを含めよたのがMVCのポイント。
この、メソッドを含んだURLを処理する枠組みをコントローラにした訳。
だから、コントローラを中心にデータをサーバに貯めるならModelに、
データをユーザに表示するならViewにと処理系を分けた。
一般的にビジネスロジックはModelにとか言われるけど、
省7
737: 2009/04/10(金)13:22 ID:??? AAS
>>736
なるほど
完全に思い込みで、
Vには、phpコードでの処理に関連するものはほとんど無くしてhtml表示メインが良い
みたいになぜか考えてしまっていて、なかなか進めなかった。
>メソッドを含んだURLを処理する枠組みをコントローラにした訳。
>だから、コントローラを中心にデータをサーバに貯めるならModelに、
>データをユーザに表示するならViewにと処理系を分けた。
これで、C、M、Vにはそれぞれこれをしようっていう考えが固まってきて
踏ん切りがついて先にすすめそうだ
省1
上下前次1-新書関写板覧索設栞歴
あと 157 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s