PHPでOOP
■ このスレッドは過去ログ倉庫に格納されています
00011 ◆SWtzLesEmM
2007/02/23(金) 13:35:52ID:???プロシージャ指向(手続き型、構造化プログラミング)でもできますが、
オブジェクト指向を使った場合の恩恵を享受するために、
PHPでオブジェクト指向プログラミングの勉強をしてみましょう。
<目的>
PHP5でオブジェクト指向プログラミングを行なうための知識を習得する。
(PHP4のOOPもOK、このスレが1000に行く前にPHP6が出たらPHP6のOOPもOK)
<方向性>
・このスレは、プログラミング初心者、PHP初心者の勉強の場として利用することを前提にします。
・PHPのOOPの話題に限定します。
(Ruby、Python、Javaなど他言語のOOPについては、その言語のスレッドでお願いします。)
・PHPのOOP学習に役立つ本、WEBサイトの紹介をお願いします。
<その他>
・略記は、「OO」=「オブジェクト指向」、「OOP」=「オブジェクト指向プログラミング」でお願いします。
・質問をする人はなるべくトリップを付けましょう。
・荒らし、煽り、叩き、気違いは無視・無干渉でお願いします。
このスレで、今日から貴方もOOP!!!\(^o^)/
0752nobodyさん
2009/08/27(木) 07:51:29ID:???最初に設定していた目標が概ね達成出来たからじゃね?w
っていうか、このスレに求めているものを書いていけば
盛り上がりを戻す可能性もあると思うよ。
質問するとか、何かソースを提供するとか。
0753nobodyさん
2009/10/25(日) 21:56:08ID:???0754nobodyさん
2009/10/30(金) 22:56:19ID:???0755nobodyさん
2009/11/13(金) 21:51:59ID:???いや、あおりとかじゃなくて。
0756nobodyさん
2009/11/19(木) 15:33:07ID:???07571 ◆SWtzLesEmM
2009/12/17(木) 22:30:30ID:???同じ機能を作るのに、コードを書く量が少なくて済むと楽ですね!
ただ、MVCだとスクリプトのファイル数が多くなると、ゴチャゴチャして見づらいと思いました。
MVC以外のフレームワークでオススメのものはありますか?
http://www.slideshare.net/NetPenguin/mvc-2659370
・PAC
・RecursiveMVC(HMVC)
・MMVC
・Doc/View
という仕組みが紹介されていました。
0758nobodyさん
2009/12/17(木) 22:33:57ID:???07591 ◆SWtzLesEmM
2009/12/17(木) 22:48:51ID:???ttp://d.hatena.ne.jp/sotarok/20091126/modern_php_programming_at_pfi
↑このスライド資料の72ページ目に、PHPフレームワークの評価が紹介されていました。
・CakePHP
世界でも日本でも大流行り。当然日本語での情報量も多い。
Modelが使いやすい。それ以外は嫌いだけど。
Cake3が別フレームワークにfork
・ZendFramework
世界的にシェアNo.1?
書く量の減らないドMフレームワーク
というかいわゆるライブラリ群
・symfony
これも利用者多い
大規模向け。がっちりしてる。
・Ethna
グリーはこれで動いている!(古いバージョンだけど)
・rhaco2
大本命の超変態フレームワーク
すごい
Ruby(RoR)っぽいFW → CakePHP / Lithium
Java(Struts)っぽいFW → symfony
Python(Django)っぽいFW → rhaco
というかんじでしょうか?
07601 ◆SWtzLesEmM
2009/12/17(木) 22:56:44ID:???ttp://d.hatena.ne.jp/kagigotonet/20091215/1260851032
>PHPはWeb特化言語という特性上他の言語では見られない強力な仕組みがあります。
>その特徴は他の言語では参照で取り回すところを文字列で取り回すところである、と言えるでしょう。
>可変関数
>PHPのフレームワークは、これを基本としています。ライブラリ、モジュールを動的にロードするのが非常に容易
>可変変数
>このように可変変数や可変引数を組み合わせるだけでも、少ないコード量でかなり複雑なことが可能になります。
各フレームワークのディスパッチ(処理の割当て)の仕組みを見ると、参考になりますね。
07611 ◆SWtzLesEmM
2009/12/17(木) 23:07:31ID:???「名前空間」を活用すると、たくさんモジュールを作っても分類が楽になりますね!
ttp://d.hatena.ne.jp/Fivestar/20091215
ttp://prezi.com/0-vyhjdkslih/
0762nobodyさん
2009/12/17(木) 23:10:38ID:???07641 ◆SWtzLesEmM
2009/12/17(木) 23:43:57ID:???>Viewにループしてもらったほうがスッキリ
そうですね。
データをループ表示させるのは、ビューの役割。
ビューの部分には
・テンプレート(HTMLファイル)
・テンプレートエンジン(HTMLファイルに文字列を当てはめるパーサー)
の二つが含まれている形にすれば、
表示に関するロジック(繰返し表示の処理など)はビューの中に置けばOK
=表示に関する機能を修正する場合、ビューの中を探せばOK
07651 ◆SWtzLesEmM
2009/12/18(金) 00:45:09ID:???MVCのモデルはどんなふうに作るか?という話で、
・トランザクションスクリプト
・ドメインモデル
という二つのスタイルがあるそうです。
ttp://pc11.2ch.net/test/read.cgi/php/1241341332/
ttp://proshile.blog.drecom.jp/archive/616
・トランザクションスクリプト
→古きよきC言語時代の関数が主体の書き方
・ドメインオブジェクト
→オブジェクト毎に内包する値と役割の責務を明確にしたOOPライクな書き方
MVCのモデルの部分は2層に分けて、
(1)ビジネスロジックコンポーネント
(2)デーアクセスロジックコンポーネント(O/Rマッパーを含む)
と分類する考え方があるそうです。
ttp://satoshi.blogs.com/life/2009/10/rails_mvc.html
ttp://d.hatena.ne.jp/p4life/20091014/1255532618
>Skinny Controller, Fat Model
・コントローラーはシンプルにする
・モデルに処理を集約する → 上記(1)ビジネスロジック=データの加工を担当
・モデルはデータの整合性を保証する → 上記(2)データアクセスロジック=データの読み書きを担当
ttp://www.virtual-tech.net/blog/2008/10/reflex-restful.html
ttp://www.virtual-tech.net/blog/uploaded_images/designold-722880.PNG
↑この図だと、モデルの部分が2層に分かれていて、
サービス層=上記(1)
ドメイン層=上記(2)
という形になるかと思います。
07661 ◆SWtzLesEmM
2009/12/18(金) 00:55:44ID:???C側に書いてあるコードを、なるべくM側の方に移動した方がスッキリするかも?
CとMの間のデータ受け渡しについて、こんな記事がありました。
↓
ttp://q.hatena.ne.jp/1242894491
>個々のSetterをオーバーライド出来るところが
>symfonyの便利な部分じゃないでしょうか。
>これが出来ないと個々のコントローラでデータを加工するハメになります・・。
>「MVCとして洗練されている」というのは
>「MVCに忠実に機能している」というのと同義かと思います。
一口にOOPと言っても、各フレームワークでちょっとずつ使い方に違いがありますね。
07671 ◆SWtzLesEmM
2009/12/18(金) 01:20:21ID:???フレームワークを使ってみて、OOPの使い方の理解が深まりました。
皆さん、たくさんのアドバイスをいただき、どうもありがとうございました。
分からないことがあっても、検索したり質問して1個ずつ埋めていけば、確実に進歩できると思います。
どんなプロフェッショナルな人でも、最初は素人だった…
これからPHPの勉強を始める方がいましたら、焦らずに頑張ってくださいね!(*^o^*)/
0768nobodyさん
2010/01/16(土) 21:42:43ID:???0769nobodyさん
2010/03/05(金) 11:55:14ID:???サイト見つけたので紹介しておきます。
0770nobodyさん
2010/04/20(火) 14:58:53ID:???必要なときにどこからでも呼び出せるプログラムみたいなものだよね。
0771nobodyさん
2010/04/20(火) 18:56:50ID:???0772nobodyさん
2010/04/21(水) 02:32:40ID:???プレーヤーを継承した CDプレーヤー,MP3プレーヤー がある
それぞれに 再生,停止,早送り,巻き戻し,次トラック,前トラック という機能(メソッド)がある
具体的な処理はそれぞれが行うので,使う人はプレーヤーの処理している内容を
理解している必要はなく,再生したいときに再生ボタンを押すという事だけ
分かっていればいい。(カプセル化)
つまり考え方であって,そういう意味では間違ってないのかもしれない。
0773nobodyさん
2010/04/21(水) 23:48:02ID:???0775nobodyさん
2010/04/22(木) 20:41:56ID:???0777nobodyさん
2010/04/23(金) 00:43:27ID:???PHPは型にしばられない(しばられなさすぎて困る)スクリプト言語だからね。
逆に、静的言語のように型を意識しすぎると、スクリプト言語のメリットが少なくなると思う。
「じゃぁ、お前、クラス階層つかわねーのか?」と言われればノー
コンポーネント(レイヤ)の中では、型を意識し、拡張する場合は継承も使用する。
コンポーネント間の接続は型ではなくメッセージ(メソッド)に束縛させるように意識している。
でも最近は、interface作って、抽象クラス作ってというのがおっくうになってきたので、可能ならメソッドポインタによるコールバックで済ませちゃうこともしばしば。
0778nobodyさん
2010/04/30(金) 11:21:02ID:???http://www.craftgear.net/docs/yii_blog_tutorial/index.html
本家の日本語訳が途中でストップしてるけど、こちらは全部訳してある。
本家
http://www.yiiframework.com/doc/blog/ja
0779nobodyさん
2010/05/22(土) 17:38:18ID:???0780nobodyさん
2010/05/24(月) 00:43:02ID:???javaや.NETはたまたPythonあたりの純血PGが書けばOOPっぽいソースになると思うよ。
PerlとかPHPから始めました、ってのはだめだな。
0781nobodyさん
2010/06/09(水) 18:32:35ID:uqJikGsn0782nobodyさん
2010/06/09(水) 21:02:23ID:???名前空間とか
0783nobodyさん
2010/06/09(水) 22:05:43ID:???0784nobodyさん
2010/06/09(水) 22:50:19ID:???0785nobodyさん
2010/06/11(金) 20:18:27ID:???じゃあ、PHP5のコードをPHP6に移植しても問題なく動くってことでいい?
PHP4→PHP5のときは大変みたいだったけど。
同じ思いをしたくない。
0786nobodyさん
2010/06/12(土) 05:01:32ID:???0787nobodyさん
2010/06/13(日) 07:15:58ID:???0788nobodyさん
2010/06/20(日) 11:50:01ID:???公式にオブジェクト指向ライブラリを提供すればよい
0790nobodyさん
2010/06/21(月) 16:09:23ID:L/6UXzEfオブジェクト指向(クラス)を使ってるつもりなんだけど正しいのか自信がない
クラスformPartsの中で各プルダウンやラジオボタンの要素(nameとvalue)を
外部ファイルから読み込んどいて
$fp = new formParts();
$pref = $fp->callPullDown('prefecture',$val);
$job = $fp->callPullDown('job',$val);
$sex = $fp->callRadioButton('sex',$val);
こんな感じでメソッドでパーツの種類を指定しつつ(ラジオボタンかプルダウンか)
そのパーツの要素(都道府県とか職業とか)と既定値($val)を投げて呼び出してる。
プルダウン要素とかは各メソッド内部で引数によって外部ファイルから読みこんでる。
クラスってこんな使い方でいいの? 継承とかはさっぱりわからない、どういう状況で使うんだか。
あと1さん凄いね、ガッツがあるなぁ。。
0791nobodyさん
2010/06/22(火) 02:52:17ID:???0792nobodyさん
2010/06/22(火) 02:53:02ID:???0793nobodyさん
2010/06/26(土) 22:03:26ID:lGwy0O8s0794nobodyさん
2010/06/28(月) 10:27:12ID:PXXo1bnrPHP最大の武器であるHTMLとの親和性の高さを殺してるよね
0795nobodyさん
2010/06/28(月) 20:02:03ID:???0796nobodyさん
2010/06/28(月) 22:25:44ID:???PHPのHTML埋め込みなんてもう古い
0797nobodyさん
2010/06/29(火) 01:12:38ID:???0798nobodyさん
2010/06/29(火) 07:49:52ID:???0799nobodyさん
2010/06/30(水) 18:24:45ID:???そもそもPHP自体テンプレートみたな言語じゃん。
index.php
<?php
$title = "hoge";
$hello = "hello world";
include "template.php";
?>
template.php
<html>
<head><title><?php echo $title ?></title><head>
<body>
<h1><?php echo $hello ?></h1>
</body>
</html>
こういうのとは違うの?
0800nobodyさん
2010/07/01(木) 00:39:53ID:???コードを動かすという発想で作られていない。
コードーの中でHTMLを出力するという発想。
そういう言語ではテンプレートが重要。
PHPでテンプレートの意味が薄いのは確か
ただテンプレートの意味がまったくないかというと、そうではなく
分業作業。つまりプログラマとデザイナに分かれて開発するときは便利。
デザイナはphpコードはまったく知らない。だからなるべくシンプルな
記号レベルの書き方であってほしい。しかもDreamweaverのような
HTMLエディタで見たときに不具合無く表示されるものの方がいい。
0801nobodyさん
2010/07/01(木) 14:26:10ID:ksuFUfiJいや、分かるようにPHPを書かなければならいと思う
それがPHP
0802nobodyさん
2010/07/01(木) 19:54:20ID:???まで読んだ
0803nobodyさん
2010/07/07(水) 17:20:53ID:???0804nobodyさん
2010/08/20(金) 12:31:24ID:???0805nobodyさん
2010/08/20(金) 14:43:19ID:???マルチしてんじゃないですよクソゴミ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
0806nobodyさん
2011/10/15(土) 11:25:55.76ID:???0807nobodyさん
2011/10/17(月) 12:28:57.35ID:???コーディングが楽だから、OOPで良いんです!!
0808nobodyさん
2011/12/16(金) 08:42:12.54ID:???OOPだからボトルネックが把握しやすくてメンテナンスや新実装がしやすくなる
0809nobodyさん
2011/12/18(日) 18:35:23.31ID:XDa3NN+N0810nobodyさん
2011/12/18(日) 21:04:34.89ID:???だったら書き方おかしいよ
0811nobodyさん
2011/12/19(月) 12:14:00.72ID:8JBaGfsG体感できないとは幸せだね。
0812nobodyさん
2011/12/23(金) 12:11:53.50ID:???0813nobodyさん
2012/01/12(木) 17:20:16.63ID:???コントローラを肥大させてはならないという概念ではわかりにくい。
もっと具体的に境界線を引くべきだと思う。以下俺の意見なんだけど、
MVCってユニットテストために
ユニットテストを難しくする汚染要素を隔離するためにあるのだと思う。
具体的に言うとこんな感じ。
View(GUI, xml, html, json)
Controller(Session, Request, Form, 画面遷移などWeb独自のデータ)
Model(RDB, KVS)
MとCが分離されることでMはWebスコープから分離され、CはSQLから分離される。
でもこの理屈だとVとCの関係がおかしくなっちゃうね。
CがVにデータを渡すときはリクエストスコープを経由しないで
直に関数の引数で整数や文字列、オブジェクトを渡すべきって話になるから。
0815nobodyさん
2012/01/13(金) 12:44:55.80ID:???> MVCってユニットテストために
> ユニットテストを難しくする汚染要素を隔離するためにあるのだと思う。
正しいが、これは現場的な視点の1つの考え方。
MVCは、スケーラブルなサイト構築のためのパラダイムという方が、しっくりくると思うが...
0816nobodyさん
2012/01/13(金) 14:14:37.80ID:???0817nobodyさん
2012/03/25(日) 15:09:36.84ID:AY6baIQVイメージとしてはJavaのStrutsのようなものです。
0818nobodyさん
2012/03/26(月) 23:05:27.26ID:???0823nobodyさん
2012/03/29(木) 00:32:40.17ID:???OOPに慣れてるからです。
オブジェクトとして定義するところで
phpの場合、配列になるのでいらいらします。
たとえばCakePHP。ModelがModelになっていない。
やはり後付けでOOP機能が加わった言語では無理があるのですね。
0827nobodyさん
2012/03/29(木) 12:36:50.80ID:???0830sage
2012/03/31(土) 00:44:25.15ID:5Y7rPOtM実行速度が遅いPHPではそもそも向いていない。
0834nobodyさん
2012/04/02(月) 10:00:58.63ID:???Javaのフレームワークの比較で語りましから、あなたが今までにどのJavaフレームワークを使ってきたのか教えてください
0835nobodyさん
2012/04/03(火) 02:06:22.73ID:???08371
2012/04/03(火) 05:28:27.27ID:???いやです
0838sage
2012/04/03(火) 09:03:36.19ID:s3V9thNo0839nobodyさん
2012/04/03(火) 12:55:40.44ID:???0840nobodyさん
2012/04/03(火) 13:09:50.72ID:???0841nobodyさん
2012/04/03(火) 13:40:01.23ID:???速度の面でも不利
0842nobodyさん
2012/04/03(火) 14:48:23.63ID:???0845nobodyさん
2012/04/04(水) 00:03:58.45ID:???回答者がそのフレームワークとCakePHPを比較すべき
0846nobodyさん
2012/04/04(水) 02:04:42.62ID:???phpのOOP機能は単なるおもちゃ。
0847nobodyさん
2012/04/04(水) 19:20:23.84ID:???すいません
ここのフレームワークのソースをダウンロードしたいんですが、ダウンロードできません。
どこかで入手できないでしょうか
0848nobodyさん
2012/04/04(水) 21:46:53.59ID:???10分ほどしてから再度お試しください。
0849nobodyさん
2012/04/21(土) 07:48:42.18ID:???PHP自体カス以下だし
0850nobodyさん
2012/04/25(水) 22:43:11.22ID:???参加者募集中
■ このスレッドは過去ログ倉庫に格納されています