PHPでOOP (894レス)
1-

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
738
(1): 2009/04/11(土)01:35 ID:??? AAS
ループして全部表示させるっていうのはVの仕様って気がするんだよねー。

最初の1件とか最初から100件とか、或いは全部っていうのはVの都合なわけで、
変更したいって思ったときはVだけ触ればよくしたい。

ってことで、
無駄とかなんとかは気にせずに、純粋な感じでいうと
Cの人は全部もらって、そのままVの人に渡す
っていうのがMVCぽいかな、って思う。
739: 2009/04/11(土)07:42 ID:??? AAS
>>738
俺は、Vの役割は「もらったデータを表示する」だと思ってるから、
ループする処理とかはCの役割だと思うけどな。
Vは、大量データ表示用のフォーマットや、1件詳細表示用のフォーマットを
持っているという形。
Cは、指定された件数のデータを表示させる機能を持っている、という形。
740: 2009/04/11(土)07:47 ID:??? AAS
抽象論も大事だけど、具体的にコードを書いていきながら進めると分かりやすくなるかもしれないね。
質問者さんは、自分の思う発想でコードを書いてさらしてみたらどうかな。
それに対していろいろな人がレビューをすると何か見えてくるかもしれない。
741: [age] 2009/04/11(土)14:03 ID:??? AAS
PHPじゃないけど、こんな記事があった。

ASP.NET MVC入門
外部リンク[html]:www.atmarkit.co.jp
742: [age] 2009/05/07(木)16:51 ID:??? AAS
OOPの理論って奥が深いな。
デザインパターンなども学んで理論に忠実に沿った理想的な
プログラミングをしてみたいなとも思ったけれど、つきつめると
ケースバイケースってことに落ち着くから、こういう、忠実さを
追いかけるのは無駄な考え方のような気もしている。
この考えで合ってるよね?w
743: 2009/05/07(木)16:54 ID:??? AAS
結論出ちゃったじゃないか
744: 2009/05/07(木)20:10 ID:??? AAS
それ、ASP.NETに新しく導入された「ASP.NET MVC」ってフレームワークの記事なんだよ。
そもそもASP.NETはイベントドリブンなフレームワークで、本来の意味でのMVCを採用してたんだけど、StrutsとかRoRとかがウェブで流行ったから、MSも似たようなフレームワークを作ったわけ。
だからのこれまでのASP.NETの方が本来的なMVCに近い。「ASP.NET MVC」は「ASP.NET ウェブMVC」とかって名前にすれば良かったのに。
745: 2009/05/07(木)20:53 ID:??? AAS
M$って、紛らわしい名前つけるのが好きだよね。
ASP.NETにおいてMVCに関する詳しい記事かなと思ったけれど、
実際に読んでみると、まったく別なフレームワークってことだった。
違いについて理解するのがひとつ面倒になったなぁ。
746: 2009/05/07(木)23:05 ID:??? AAS
stackoverflowを作ったヤツね。
747: [age] 2009/05/19(火)20:06 ID:??? AAS
保守しとくね。
748
(2): 2009/06/18(木)20:12 ID:??? AAS
なんでカソってんだー
749: 2009/07/02(木)08:55 ID:SGa5I59I(1) AAS
PHPにおけるOOPは100mを自動車で走るようなもの
自転車を使え
走れ
歩いてもいいぞ
750
(1): 2009/07/02(木)09:07 ID:??? AAS
OOPを使いまくる必要はないけど
必要な機能をモジュール化したいときにOOPをいいとこ取りすれば便利
751: 2009/07/02(木)09:12 ID:??? AAS
>>748
秋田w
752: 2009/08/27(木)07:51 ID:??? AAS
>>748
最初に設定していた目標が概ね達成出来たからじゃね?w
っていうか、このスレに求めているものを書いていけば
盛り上がりを戻す可能性もあると思うよ。
質問するとか、何かソースを提供するとか。
753: [age] 2009/10/25(日)21:56 ID:??? AAS
一応保守しておきます。
754
(1): 2009/10/30(金)22:56 ID:??? AAS
OOPのしっかりしてるFWどれ
755: [age] 2009/11/13(金)21:51 ID:??? AAS
FWは、その開発目的によるので、結論は出ない。
いや、あおりとかじゃなくて。
756
(1): 2009/11/19(木)15:33 ID:??? AAS
コードの参考になるのはどれかと
757: 1 ◆SWtzLesEmM 2009/12/17(木)22:30 ID:??? AAS
PHPのフレームワークでMVCのタイプを使ってみました。
同じ機能を作るのに、コードを書く量が少なくて済むと楽ですね!

ただ、MVCだとスクリプトのファイル数が多くなると、ゴチャゴチャして見づらいと思いました。
MVC以外のフレームワークでオススメのものはありますか?

外部リンク:www.slideshare.net
・PAC
・RecursiveMVC(HMVC)
・MMVC
・Doc/View
という仕組みが紹介されていました。
758: 2009/12/17(木)22:33 ID:??? AAS
特に無い
759
(1): 1 ◆SWtzLesEmM 2009/12/17(木)22:48 ID:??? AAS
>>754
外部リンク:d.hatena.ne.jp
↑このスライド資料の72ページ目に、PHPフレームワークの評価が紹介されていました。

・CakePHP
 世界でも日本でも大流行り。当然日本語での情報量も多い。
 Modelが使いやすい。それ以外は嫌いだけど。
 Cake3が別フレームワークにfork

・ZendFramework
 世界的にシェアNo.1?
 書く量の減らないドMフレームワーク
省13
760: 1 ◆SWtzLesEmM 2009/12/17(木)22:56 ID:??? AAS
>>756
外部リンク:d.hatena.ne.jp
>PHPはWeb特化言語という特性上他の言語では見られない強力な仕組みがあります。
>その特徴は他の言語では参照で取り回すところを文字列で取り回すところである、と言えるでしょう。
>可変関数
>PHPのフレームワークは、これを基本としています。ライブラリ、モジュールを動的にロードするのが非常に容易
>可変変数
>このように可変変数や可変引数を組み合わせるだけでも、少ないコード量でかなり複雑なことが可能になります。

各フレームワークのディスパッチ(処理の割当て)の仕組みを見ると、参考になりますね。
761: 1 ◆SWtzLesEmM 2009/12/17(木)23:07 ID:??? AAS
>>750
「名前空間」を活用すると、たくさんモジュールを作っても分類が楽になりますね!
外部リンク:d.hatena.ne.jp
外部リンク:prezi.com
762: 2009/12/17(木)23:10 ID:??? AAS
人の書いた文章を全文コピペするのはどうかと思うよ
763: 2009/12/17(木)23:11 ID:??? AAS
あ、上のは主に>>759に対してね
764: 1 ◆SWtzLesEmM 2009/12/17(木)23:43 ID:??? AAS
>>734
>Viewにループしてもらったほうがスッキリ
そうですね。
データをループ表示させるのは、ビューの役割。

ビューの部分には
・テンプレート(HTMLファイル)
・テンプレートエンジン(HTMLファイルに文字列を当てはめるパーサー)
の二つが含まれている形にすれば、
表示に関するロジック(繰返し表示の処理など)はビューの中に置けばOK
=表示に関する機能を修正する場合、ビューの中を探せばOK
765: 1 ◆SWtzLesEmM 2009/12/18(金)00:45 ID:??? AAS
>>727
MVCのモデルはどんなふうに作るか?という話で、
・トランザクションスクリプト
・ドメインモデル
という二つのスタイルがあるそうです。

2chスレ:php
外部リンク:proshile.blog.drecom.jp
・トランザクションスクリプト
 →古きよきC言語時代の関数が主体の書き方
・ドメインオブジェクト
省17
766: 1 ◆SWtzLesEmM 2009/12/18(金)00:55 ID:??? AAS
>>728
C側に書いてあるコードを、なるべくM側の方に移動した方がスッキリするかも?
CとMの間のデータ受け渡しについて、こんな記事がありました。

外部リンク:q.hatena.ne.jp
>個々のSetterをオーバーライド出来るところが
>symfonyの便利な部分じゃないでしょうか。
>これが出来ないと個々のコントローラでデータを加工するハメになります・・。
>「MVCとして洗練されている」というのは
>「MVCに忠実に機能している」というのと同義かと思います。
省1
767: 1 ◆SWtzLesEmM 2009/12/18(金)01:20 ID:??? AAS
>>89
フレームワークを使ってみて、OOPの使い方の理解が深まりました。
皆さん、たくさんのアドバイスをいただき、どうもありがとうございました。
分からないことがあっても、検索したり質問して1個ずつ埋めていけば、確実に進歩できると思います。

どんなプロフェッショナルな人でも、最初は素人だった…
これからPHPの勉強を始める方がいましたら、焦らずに頑張ってくださいね!(*^o^*)/
768: [age] 2010/01/16(土)21:42 ID:??? AAS
どのフレームワーク?
769: [age] 2010/03/05(金)11:55 ID:??? AAS
外部リンク:www.phppro.jp
サイト見つけたので紹介しておきます。
770: [age] 2010/04/20(火)14:58 ID:??? AAS
オブジェクト指向ってrequire文とinclude文みたいな考えと同じかな?
必要なときにどこからでも呼び出せるプログラムみたいなものだよね。
771: 2010/04/20(火)18:56 ID:??? AAS
うん
772
(1): 2010/04/21(水)02:32 ID:??? AAS
OOPの説明で一番わかりやすかったのがプレーヤーの例

プレーヤーを継承した CDプレーヤー,MP3プレーヤー がある
それぞれに 再生,停止,早送り,巻き戻し,次トラック,前トラック という機能(メソッド)がある

具体的な処理はそれぞれが行うので,使う人はプレーヤーの処理している内容を
理解している必要はなく,再生したいときに再生ボタンを押すという事だけ
分かっていればいい。(カプセル化)

つまり考え方であって,そういう意味では間違ってないのかもしれない。
773
(2): 2010/04/21(水)23:48 ID:??? AAS
それぞれにあるのではなく、プレイヤーという抽象クラスにあるのでは?
774: 2010/04/22(木)01:28 ID:??? AAS
>>773
ダックタイピングなら、それぞれにあってもいいよね
775
(1): 2010/04/22(木)20:41 ID:??? AAS
OOPの説明でダックタイピングの例出すの?
776: 772 2010/04/22(木)23:04 ID:??? AAS
>>773
そうなんだけど,具体的な実装がそれぞれ違うという意味で
ああいう書き方にした。
777: 2010/04/23(金)00:43 ID:??? AAS
>>775
PHPは型にしばられない(しばられなさすぎて困る)スクリプト言語だからね。

逆に、静的言語のように型を意識しすぎると、スクリプト言語のメリットが少なくなると思う。

「じゃぁ、お前、クラス階層つかわねーのか?」と言われればノー
コンポーネント(レイヤ)の中では、型を意識し、拡張する場合は継承も使用する。
コンポーネント間の接続は型ではなくメッセージ(メソッド)に束縛させるように意識している。

でも最近は、interface作って、抽象クラス作ってというのがおっくうになってきたので、可能ならメソッドポインタによるコールバックで済ませちゃうこともしばしば。
778: 2010/04/30(金)11:21 ID:??? AAS
Yiiブログチュートリアル 日本語訳
外部リンク[html]:www.craftgear.net
本家の日本語訳が途中でストップしてるけど、こちらは全部訳してある。

本家
外部リンク:www.yiiframework.com
779: [age] 2010/05/22(土)17:38 ID:??? AAS
保守しておきます。
780: 2010/05/24(月)00:43 ID:??? AAS
javaや.NETはたまたPythonあたりの純血PGが書けばOOPっぽいソースになると思うよ。
PerlとかPHPから始めました、ってのはだめだな。
781: 2010/06/09(水)18:32 ID:uqJikGsn(1) AAS
PHP6のオブジェクト指向ってなにか大きな変化ある?
782: 2010/06/09(水)21:02 ID:??? AAS
遅延静的束縛とか
名前空間とか
783: 2010/06/09(水)22:05 ID:??? AAS
名前空間は5.3だろ
784: 2010/06/09(水)22:50 ID:??? AAS
遅延静的束縛もですが
785: 2010/06/11(金)20:18 ID:??? AAS
機能追加がほとんどか。
じゃあ、PHP5のコードをPHP6に移植しても問題なく動くってことでいい?
PHP4→PHP5のときは大変みたいだったけど。
同じ思いをしたくない。
786: 2010/06/12(土)05:01 ID:??? AAS
互換性見れば分かるだろ
787: 2010/06/13(日)07:15 ID:??? AAS
逆に互換性なんかいいから関数の無茶苦茶な命名規則とか直して欲しい
788
(1): 2010/06/20(日)11:50 ID:??? AAS
関数はもうほうっておいて、
公式にオブジェクト指向ライブラリを提供すればよい
789: 2010/06/20(日)15:53 ID:??? AAS
>>788
SPLって公式じゃないの?
790: 2010/06/21(月)16:09 ID:L/6UXzEf(1) AAS
質問するのが怖いんだけど、自分はフォームのパーツを呼び出すのに
オブジェクト指向(クラス)を使ってるつもりなんだけど正しいのか自信がない

クラスformPartsの中で各プルダウンやラジオボタンの要素(nameとvalue)を
外部ファイルから読み込んどいて
$fp = new formParts();
$pref = $fp->callPullDown('prefecture',$val);
$job = $fp->callPullDown('job',$val);
$sex = $fp->callRadioButton('sex',$val);

こんな感じでメソッドでパーツの種類を指定しつつ(ラジオボタンかプルダウンか)
そのパーツの要素(都道府県とか職業とか)と既定値($val)を投げて呼び出してる。
省3
791: 2010/06/22(火)02:52 ID:??? AAS
OOではないな
792: 2010/06/22(火)02:53 ID:??? AAS
分からないなら普通に勉強しろよ・・・
793: 2010/06/26(土)22:03 ID:lGwy0O8s(1) AAS
ツールの勉強する前に基本を勉強しろ
794: 2010/06/28(月)10:27 ID:PXXo1bnr(1) AAS
oopってさ
PHP最大の武器であるHTMLとの親和性の高さを殺してるよね
795: 2010/06/28(月)20:02 ID:??? AAS
なんで?
796: 2010/06/28(月)22:25 ID:??? AAS
いまの流行はテンプレートだから
PHPのHTML埋め込みなんてもう古い
797: 2010/06/29(火)01:12 ID:??? AAS
そんな流行もあったねぇ。今は違うよ。
798: 2010/06/29(火)07:49 ID:??? AAS
kwsk
799: 2010/06/30(水)18:24 ID:??? AAS
テンプレートってどんな利点があるの?
そもそもPHP自体テンプレートみたな言語じゃん。

index.php
 <?php
 $title = "hoge";
 $hello = "hello world";
 include "template.php";
 ?>

template.php
 <html>
省6
800: 2010/07/01(木)00:39 ID:??? AAS
ほとんどの言語は、HTMLの中で
コードを動かすという発想で作られていない。
コードーの中でHTMLを出力するという発想。

そういう言語ではテンプレートが重要。
PHPでテンプレートの意味が薄いのは確か

ただテンプレートの意味がまったくないかというと、そうではなく
分業作業。つまりプログラマとデザイナに分かれて開発するときは便利。
デザイナはphpコードはまったく知らない。だからなるべくシンプルな
記号レベルの書き方であってほしい。しかもDreamweaverのような
HTMLエディタで見たときに不具合無く表示されるものの方がいい。
801: 2010/07/01(木)14:26 ID:ksuFUfiJ(1) AAS
デザイナーでもHTMLとPHPの繋がりぐらいは分かる
いや、分かるようにPHPを書かなければならいと思う
それがPHP
802: 2010/07/01(木)19:54 ID:??? AAS
デザイナーって馬鹿だな
まで読んだ
803: 2010/07/07(水)17:20 ID:??? AAS
ここで議論してる奴らは世に影響力のないカスばかりだから参考にしなくて良い
804: 2010/08/20(金)12:31 ID:??? AAS
廃れてるねー
805: 2010/08/20(金)14:43 ID:??? AAS
852 忍者Perl ◆M5ZWRnXOj6 [] 2010/08/20(金) 13:30:09 ID: Be:
    マルチしてんじゃないですよクソゴミww(笑)wwww(笑)wwww(笑)wwww(笑)ww
    ww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)ww
    ww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)ww
    ww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)ww
    ww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)ww
    ww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)ww
    ww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)wwww(笑)ww
    ww(笑)wwww(笑)ww
    PHPやってるやつノウタリンばっかりwwwwwwww
806: 2011/10/15(土)11:25 ID:??? AAS
PHPでOOPやると重いと感じませんか?
807: 2011/10/17(月)12:28 ID:??? AAS
いいんです!
コーディングが楽だから、OOPで良いんです!!
808: 2011/12/16(金)08:42 ID:??? AAS
逆だろ
OOPだからボトルネックが把握しやすくてメンテナンスや新実装がしやすくなる
809: 2011/12/18(日)18:35 ID:XDa3NN+N(1) AAS
しかし、実行速度遅くなるね
810
(1): 2011/12/18(日)21:04 ID:??? AAS
遅くなるって体感でわかるほど遅くなるのか?
だったら書き方おかしいよ
811: 2011/12/19(月)12:14 ID:8JBaGfsG(1) AAS
>>810
体感できないとは幸せだね。
812: 2011/12/23(金)12:11 ID:??? AAS
case by case.
813
(2): 2012/01/12(木)17:20 ID:??? AAS
>>736
コントローラを肥大させてはならないという概念ではわかりにくい。
もっと具体的に境界線を引くべきだと思う。以下俺の意見なんだけど、

MVCってユニットテストために
ユニットテストを難しくする汚染要素を隔離するためにあるのだと思う。

具体的に言うとこんな感じ。
View(GUI, xml, html, json)
Controller(Session, Request, Form, 画面遷移などWeb独自のデータ)
Model(RDB, KVS)

MとCが分離されることでMはWebスコープから分離され、CはSQLから分離される。
省3
814: 2012/01/12(木)19:14 ID:??? AAS
>>813
ゴバクしただけあって、センス悪いな。
815: 2012/01/13(金)12:44 ID:??? AAS
>>813

> MVCってユニットテストために
> ユニットテストを難しくする汚染要素を隔離するためにあるのだと思う。

正しいが、これは現場的な視点の1つの考え方。

MVCは、スケーラブルなサイト構築のためのパラダイムという方が、しっくりくると思うが...
816: 2012/01/13(金)14:14 ID:??? AAS
新米PGに教える方法としては良いかもしれん
817: 2012/03/25(日)15:09 ID:AY6baIQV(1) AAS
PHPのOOPフレームワークを教えて下さい。
イメージとしてはJavaのStrutsのようなものです。
818
(1): 2012/03/26(月)23:05 ID:??? AAS
JavaStrutsはさておき、おすすめはYIIだな。PHPの中では美しい。
819
(1): 2012/03/28(水)01:58 ID:??? AAS
>>818
YII以外では無いのでしょうか?
YIIはOOPフレームワークとしては不完全です。
820
(1): 2012/03/28(水)07:44 ID:??? AAS
>>819
どの辺が?
821
(1): [saga] 2012/03/28(水)10:27 ID:??? AAS
>>820
オブジェクト指向言語であればオブジェクトを使用するところで、
配列を使用する点。
822
(1): 2012/03/28(水)19:46 ID:??? AAS
>>821
なんでOOPフレームワークを使いたいの?
823
(2): 2012/03/29(木)00:32 ID:??? AAS
>>822
OOPに慣れてるからです。
オブジェクトとして定義するところで
phpの場合、配列になるのでいらいらします。
たとえばCakePHP。ModelがModelになっていない。
やはり後付けでOOP機能が加わった言語では無理があるのですね。
824
(1): 2012/03/29(木)00:43 ID:??? AAS
>>823
ModelがModelになってないというのは具体的にどういうこと?
825
(1): 2012/03/29(木)08:52 ID:??? AAS
>>824
どのオブジェクト指向言語を経験しましたか?
それにあわせて話をします。
826: 2012/03/29(木)09:19 ID:??? AAS
>>823
phpで本格的なオブジェクト指向ははじめから無理だよ。
827: 2012/03/29(木)12:36 ID:??? AAS
PHPのOOP自体、後付けだし...
828
(1): 2012/03/29(木)21:58 ID:??? AAS
>>825
Java
829
(1): 2012/03/30(金)00:15 ID:??? AAS
>>828
ぜひStrutsの話を聞きたいですね。
たとえばCakePHPやsymphonyとどう違いますか?
1-
あと 65 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.020s