トップページ⇒php
886コメント381KB

PHPでOOP

■ このスレッドは過去ログ倉庫に格納されています
00011 ◆SWtzLesEmM 2007/02/23(金) 13:35:52ID:???
PHPを使ってプログラミングするとき、
プロシージャ指向(手続き型、構造化プログラミング)でもできますが、
オブジェクト指向を使った場合の恩恵を享受するために、
PHPでオブジェクト指向プログラミングの勉強をしてみましょう。

<目的>
PHP5でオブジェクト指向プログラミングを行なうための知識を習得する。
(PHP4のOOPもOK、このスレが1000に行く前にPHP6が出たらPHP6のOOPもOK)

<方向性>
・このスレは、プログラミング初心者、PHP初心者の勉強の場として利用することを前提にします。
・PHPのOOPの話題に限定します。
(Ruby、Python、Javaなど他言語のOOPについては、その言語のスレッドでお願いします。)
・PHPのOOP学習に役立つ本、WEBサイトの紹介をお願いします。

<その他>
・略記は、「OO」=「オブジェクト指向」、「OOP」=「オブジェクト指向プログラミング」でお願いします。
・質問をする人はなるべくトリップを付けましょう。
・荒らし、煽り、叩き、気違いは無視・無干渉でお願いします。

このスレで、今日から貴方もOOP!!!\(^o^)/
0528nobodyさん2008/02/25(月) 12:02:29ID:???
1がアフィリエイトするのは構わないけど
2ちゃんを利用するというのが問題あり
0529nobodyさん2008/02/25(月) 12:06:47ID:???
2ちゃんねるのスレのまとめサイトであるにもかかわらず、
アフィリエイトされていると、それがどこかで告知されて、
大きく騒がれると思う。このスレに厨を沢山呼ぶことにも
なりかねない。
記念パピコとかが大量に来るので、1は早急にアフィリエイトは
辞めるべきだと思う。
0530nobodyさん2008/02/25(月) 12:07:12ID:???
嫌いだと思う事と否定すべき事は分けるものだと思うが、ここでのOOPの議論を見れば
それができないのも仕方がない。
0531nobodyさん2008/02/25(月) 12:08:30ID:???
>>530
kwsk
0532nobodyさん2008/02/25(月) 12:34:45ID:???
2ちゃん利用して金儲けはよくないし
まとめサイトで書籍紹介するのも始めてみて正直びびった
05331 ◆SWtzLesEmM 2008/02/25(月) 12:50:47ID:???
ご意見どうもありがとうございます。もう少しPHPでOOPの勉強を続けてみます。

>>517
2chでソースコードを投稿(>>36-50)したら、>>53さんが「わかりにくいからWebサイトにまとめてくれ。」とアドバイスしてくれました。
とりあえず、無料サーバ(XREA)にまとめサイトを設置しましたが、XREAは広告を表示するようになっているので仕方ないですね。
ttp://www.xrea.com/?action=ad
>当サイトは、無料運営のため、広告コードを自分で挿入する、または、自動的に挿入して頂く必要があります。

>>521
アドバイスどうもありがとうございます。
PukiWikiPlusのamazonプラグインに付いていたプラグイン作者さん?のアフィリエイトコードは外しました。

>>526
CGM型のサイトを運営して収益が出る場合、運営者だけが利益を得て、参加者に利益が還元されないと、不公平=不満に感じる人もいるかもしれませんね。
このまとめサイトは、ソースコード置き場+自分のメモという感じで使っていますが、利益が出せるでしょうか?

営利目的の企画として行なうなら、企業や出版社等に運営してもらった方が、本格的になっていいかもしれませんね。(^^;
…どこかで「PHPでOOP」講座を作ってもらえないでしょうか?>PHPプロさんとか?

>>527
勉強するとき、本を読む人っていますよね?
本は読まない人もいると思いますが、本の情報も調べたのでついでにまとめました。
0534nobodyさん2008/02/25(月) 12:58:27ID:???
1の目的がよくわらん。
1がコテハン使ってスレをリードするのおかしいやろ?
まとめサイトも1が作るのちゃうやろ
名無しがやることやろ
0535nobodyさん2008/02/25(月) 13:00:22ID:???
1がスレをリードせんといて
長くレスが続くなら
それは本当に需要のあるスレであって
1が作り上げたスレになってるやん
0536nobodyさん2008/02/25(月) 13:14:26ID:???
>>533
1(個人)に利益が出てたら、必ず騒ぐ人が出てくる。
しかし、利益が出てなければ、その旨を断っておけば、
騒いでいる意見は無視しておけば、しばらくすれば蒸発
すると思う。
0537nobodyさん2008/02/25(月) 13:18:05ID:???
>>534
俺は1ではないが。

> 1の目的がよくわらん。
スレタイの通り。PHPでOOPを勉強する。

> 1がコテハン使ってスレをリードするのおかしいやろ?
何がおかしいのかがわからん。
こうあるべきだとかいうガイドラインでもあるわけ?

> まとめサイトも1が作るのちゃうやろ
> 名無しがやることやろ
お前のローカルルールを押し付けるな。
1がまとめサイトやめたら変わりにお前がやるのか?
0538nobodyさん2008/02/25(月) 13:21:26ID:???
>>535
お前のやりたいことの方が分からん。
変な哲学押し付けるな。
0539nobodyさん2008/02/25(月) 13:27:10ID:???
スレ主がまとめサイト作ってるスレてあるの?
広告目的以外に見たことないんだけどwww
0540nobodyさん2008/02/25(月) 13:30:31ID:???
なんで事例が必要なの?
0541nobodyさん2008/02/25(月) 13:35:02ID:???
>>539
だったら君が利用しなきゃいいだけでは?
0542nobodyさん2008/02/25(月) 13:35:25ID:???
WebProg板で
スレ主がまとめサイト作ってるスレどこにあるんだよ?
0543nobodyさん2008/02/25(月) 13:36:07ID:???
2ちゃんにふさわしくない行動は見て見ぬふりは出来んよ
0544nobodyさん2008/02/25(月) 13:39:24ID:???
1は需要のないスレを無理に上げるのやめて欲しいよ
自分の存在を認められたいだけのオナニスレだよ
0545nobodyさん2008/02/25(月) 13:44:21ID:???
アフィリエイト見てオナニスレてことに確信がもてたよ
このスレは1の自己満足以外に何も生まれないよ結果としてね
0546nobodyさん2008/02/25(月) 13:45:42ID:nYfgU4lL
>>543-544
何で君はスルーができないの?
誰も書き込まなければそのまま消えていくんじゃないの?
0547nobodyさん2008/02/25(月) 13:46:57ID:???
コテハン使って自慢げにソースコード公開するやつは
よほど腕に自信がある奴か
初心者相手に自己満足したい奴かのどっちか
0548nobodyさん2008/02/25(月) 13:47:30ID:???
>>545
君の語りを見てオナニレスてことに確信がもてたよ
これらのレスは君の自己満足以外に何も生まれないよ結果としてね
0549nobodyさん2008/02/25(月) 13:49:30ID:???
>>547
ああ、そうか。だったら君はもう来るな。
0550nobodyさん2008/02/25(月) 13:52:02ID:???
1が名無しとなって言い訳してるくさいな
0551nobodyさん2008/02/25(月) 13:54:58ID:???
>>550
俺は1じゃないんだけどな。言い返せなくてそれしかいえないんだな。
それにお前がここに常駐する意味はないよな。
0552nobodyさん2008/02/25(月) 13:58:28ID:???
記念パピコ
0553nobodyさん2008/02/25(月) 14:52:48ID:???
コマツも軍需だよね
0554nobodyさん2008/02/25(月) 17:26:59ID:???
さ あ 、 も り あ が っ
                  て
                     ま
                       い
                         り
                          ま
                           し
                           た
0555nobodyさん2008/02/26(火) 10:28:32ID:???
1が書き込みしないと
恐ろしいほどさびれてんねw
1だけがPHPでOOPに興味があって
その興味を無理矢理に広めようとしてる
このスレの落胆ぶり見ればよくわかるwww
0556nobodyさん2008/02/26(火) 12:06:28ID:???
PHPにかぎらず、「オブジェクト指向」が一般化したと言っても、実際にはライブラリ(フレームワークを含む)が
クラス化されて、プログラマはそれを使ってるという程度の話でしかないから、OOPそのものの話が盛り
上がらないのは、当然といえば当然。
0557nobodyさん2008/02/26(火) 14:01:10ID:???
WebProgで勢いあるのなんてくだすれぐらいだろ
0558nobodyさん2008/02/27(水) 22:15:02ID:???
何度も1のこと前向きにとらえようとしたけど
やはり1が何をしたいのかよくわからん
0559nobodyさん2008/02/28(木) 00:08:29ID:???
OOPの勉強じゃないの?
0560nobodyさん2008/03/01(土) 01:04:42ID:???
自称非営利団体の運営を本業に転換する難しさのバーチャル体験学習。
乗せられたボランティアからの不満が噴出。
ありがち。そして解散。ありがち。
0561nobodyさん2008/03/02(日) 15:48:10ID:???
私も1が必死にスレ継続させてる意味が???
営利団体なら意味はわかりますが
0562nobodyさん2008/03/02(日) 16:50:51ID:???
このスレ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
0563nobodyさん2008/03/02(日) 20:21:37ID:???
暇人乙
0564nobodyさん2008/03/02(日) 23:43:21ID:???
まー、ここで勉強するな、とは言わないけど、本気でやろうと思ってる人は、まず自分で本買うなりして勉強すると思うよ。

別に興味ないやつはスルーでも何でもしときゃいいと思う。
0565nobodyさん2008/03/09(日) 10:19:09ID:???
>>562
1自演乙!
0566nobodyさん2008/03/10(月) 14:48:07ID:???
自演度は THE END
0567nobodyさん2008/03/17(月) 07:13:22ID:???
保守
0568nobodyさん2008/03/28(金) 02:04:42ID:???
このスレで、今日から貴方もOOP!!!\(^o^)/

>>1
オッパッピーの間違いですよね
0569nobodyさん2008/04/20(日) 09:34:37ID:???
保守
0570nobodyさん2008/05/24(土) 06:41:54ID:???
保守
0571nobodyさん2008/06/16(月) 13:47:07ID:???
難解も、難解も、オブジェクト指向
0572nobodyさん2008/06/17(火) 12:52:46ID:???
スレタイの主旨からずれるけど、
やはりC言語は、一度は学んでいた方が良いな。

Javaからプログラムに入ったから、PHPのOOPでアロー演算子使うのにとても違和感あったのだけど、
Cの構造体を知って、ドットシンタックスよりアロー演算子の方が正統派と思えるようになった。
0573nobodyさん2008/06/17(火) 13:01:04ID:???
どっと疲れる
0574nobodyさん2008/06/17(火) 16:56:31ID:???
どっと込む
0575nobodyさん2008/07/01(火) 00:56:40ID:???
>>573
>>574
バカアロー
0576nobodyさん2008/07/27(日) 23:15:55ID:???
諸事情により、Web系のプログラミングから離れていたけれど、
また時間がとれたら舞い戻ってきます。よろしくw
0577nobodyさん2008/08/09(土) 20:52:22ID:???
PHPに触る機会が・・・なんで、VBばっかりなんだ・・・
0578nobodyさん2008/08/19(火) 00:44:43ID:???
保守
0579nobodyさん2008/08/28(木) 21:10:25ID:???
保守
05801 ◆SWtzLesEmM 2008/09/02(火) 15:51:27ID:w90kCMMO
クラスの作り方(設計)について、考え方が参考になる本がありました。

http://www.amazon.co.jp/dp/4798110558/
モデルとプロセスをめぐる冒険

「モデリング」ということについて調べてみると、いろいろノウハウがあるようです。
0581nobodyさん2008/09/27(土) 22:23:48ID:???
保守
0582nobodyさん2008/10/06(月) 00:30:42ID:???
保守
0583nobodyさん2008/10/24(金) 23:26:54ID:???
保守
0584yodobashi2008/10/26(日) 01:15:24ID:???
大手ECサイトのヨドバシドットコムが、サイトリニューアルから大規模な障害を3日間...
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1220150877

506 :目のつけ所が名無しさん:2008/10/26(日) 00:47:20
大手ECサイトで、ここまで派手なリリース失敗は初めて見た。
エンジニア向けIT情報誌や関連サイトは、ぜひ取材して原因を明かして欲し
いは。
0585nobodyさん2008/11/05(水) 20:43:48ID:???
保守
0586nobodyさん2008/11/13(木) 23:12:08ID:???
保守
0587nobodyさん2008/11/15(土) 09:19:30ID:???
定期的に保守してるの誰?
糞スレに対してその執念が怖いんだが。。。
0588nobodyさん2008/11/23(日) 22:46:31ID:???
お前の粘着質の方が怖い
0589nobodyさん2008/11/29(土) 11:22:40ID:???
PHP でオブジェクト指向の設計をするための 7 つの良い習慣を身につける
http://www.ibm.com/developerworks/jp/opensource/library/os-php-7oohabits/

PHP での適切な OO の習慣を身につけることによって、より安定していて、保守が容易で、拡張も容易にできるアプリケーションを作成することができます。そのためには、次のことを忘れないでください。

* 控え目である
* 良き隣人である
* メドゥーサを見ないようにする
* 結びつきを極力弱くする
* 結束性を高める
* 家族の一員として扱う
* パターンで考える

こうした習慣を身につけ、使いこなせるようになると、皆さんはきっとアプリケーションの品質が変わったことに驚くはずです。
0590nobodyさん2008/11/30(日) 22:51:36ID:???
内容は否定しないが、その書き方はどうかなと思うな。
英語の翻訳だからなのかな。
「メドゥーサを見ないようにする」なんて飛躍した比喩表現では
イメージつかないだろw
0591nobodyさん2008/11/30(日) 23:12:38ID:???
http://phpspot.org/blog/archives/2008/11/php_7_1.html
パクりblog乙
0592nobodyさん2008/12/01(月) 12:13:27ID:YUzphIUV
>>589
メデューサの項目でインタフェースを使う意義って何?
ファクトリーパターンの利点しか説明してないような気がするんだが
0593nobodyさん2008/12/02(火) 01:29:02ID:???
>>591
広告の方が多いってどうなんだよ
1:4で広告じゃねーか
0594nobodyさん2008/12/04(木) 18:30:24ID:???
DIコンテナとかどうなのか
0595nobodyさん2008/12/14(日) 06:43:35ID:???
オブジェクト指向のカンタンな例

<?php
class A
{
function foo()
{

echo 'hello <br>';


}
}



$a = new A();
$a->foo();

$b=new A();
$b->foo();



?>
0596nobodyさん2008/12/15(月) 02:03:44ID:???
簡易なMVCモデルのサンプルってないのかなぁ。
フレームワークを作るとか、フレームワークを使うとかじゃなくてさ。
考え方を学ぶためにみてみたいんだけど。
過去ログにあるように、つい、MVモデルになってしまうもんで。
0597nobodyさん2008/12/15(月) 03:35:20ID:???
巷に星の数ほどあるだろ
0598nobodyさん2008/12/15(月) 12:27:44ID:???
Googleで、

簡易なMVCモデル

と検索させる

ttp://www.google.com/search?client=safari&rls=ja-jp&q=簡易なMVCモデル&ie=UTF-8&oe=UTF-8

ドゾ...
0599nobodyさん2008/12/16(火) 10:49:27ID:???
結構前の話だけど、>>488-489へのレスってついてるのかな?
過去ログ読み直してみても、何処が批判されているのかが分からん。
Viewはこれでいいと思うのだが。
0600nobodyさん2008/12/16(火) 10:56:49ID:???
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はそのクラスのインスタンスの生成
と実行までを行うべきだという視点で批判してるとか。
0601nobodyさん2008/12/16(火) 11:17:25ID:???
はい?批判ってどれ?
0602nobodyさん2008/12/16(火) 12:52:53ID:???
>>601
批判している書込みは>>479です。
「に」のサンプルが、(コーディングにかかわるルール以外で)
MVCの設計はこれで良いのかがあいまいなまま終わってる気がします。
0603nobodyさん2008/12/16(火) 13:03:16ID:???
気になってる批判は>>469もだな。そして>>471となっているが、そのレスが
無くておわってないかい?
0604nobodyさん2008/12/16(火) 19:38:24ID:???
よくわかんないんだけど、OOPとMVCって両立できるの?
0605nobodyさん2008/12/16(火) 19:50:24ID:???
MVCをOOPで実現するんだろw
0606nobodyさん2008/12/17(水) 01:23:14ID:???
これどうなの?

ttp://www13.plala.or.jp/naka_jima/php/chapter12.html
0607nobodyさん2008/12/17(水) 01:36:07ID:???
どうって何が?
0608nobodyさん2008/12/17(水) 03:42:22ID:???
MVCだと必ずフレームワークを使わなければならないわけでもないよね。ちがうの?
それとも、非常に単純なクラス構成でMVCを実現しようという考えが間違いとか?
0609nobodyさん2008/12/17(水) 04:51:02ID:???
別にいいんじゃ?
0610nobodyさん2008/12/17(水) 10:09:45ID:???
>>606見たんだけど、MVCってこんななの?
View や Model 1つに対して1ファイルみたいだけど、ファイル量半端ないことになりそう。
0611nobodyさん2008/12/17(水) 14:15:45ID:???
DBの形式や最終的な見せ方によって、ファイル数は変わるんじゃないの?

でも、MVCってわりとファイル多めだよな!

1ファイルのコード量、大して多くないけど
0612nobodyさん2008/12/17(水) 15:06:27ID:???
ファイルが多めなのが嫌なら1ファイル内に複数書けばいいじゃない
0613nobodyさん2008/12/17(水) 17:53:39ID:???
OOPそのものをやろうとするとクラスやファイル量が多くなるからね。
汎用性を考えて作ろうとするとなおさらだ。それはしかたがないのかも。

そこをあえて、フレームワークや外部のモジュールなどを使わずに
非常にクラス数を少なくしてやってみたいなと思うんだけどね。
MVCの理解の一環として。
0614nobodyさん2008/12/17(水) 20:20:24ID:???
やってみればいいのでは?
0615nobodyさん2008/12/18(木) 01:34:16ID:???
<?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);
0616nobodyさん2008/12/18(木) 01:36:48ID:???
なんじゃそりゃ
0617nobodyさん2008/12/18(木) 01:37:24ID:???
最後の一行間違い
0618nobodyさん2008/12/18(木) 08:21:41ID:???
せめてクラスは3つ以上にするべきだろ。
最低限といっても、ファイルを読み込んで表示とか、書き込みとかの処理まで
出来る機能を持ったほうがコントローラとビューの違いが明確に分かりやすく
なると思うんだけど。
0619nobodyさん2008/12/18(木) 10:48:40ID:???
これはMVCどこがやるのが妥当か?
ってところで迷う。
時々、曖昧なのが出てきちゃう。
0620nobodyさん2008/12/18(木) 11:48:41ID:???
>>619
ここで事例を通じて具体的な意見を交わしていけばどうかな?」

例えば・・・
掲示板
■コントローラ:処理の内容を判断するクラス
・プログラムが実行された時、一番最初に実行される
・POSTの値をみて、以下の処理にてどれに該当するかを判断する
 ・データを表示する
 ・データを書込む
 ・編集用のフォームを表示する

■ビュー:htmlのレイアウト表示を担当するクラス
・以下のメソッドを持つ
 ・データをhtmlで表示する
 ・データ編集用htmlを表記する

■モデル:データファイルを管理するクラス
・ファイルの読み込み、書込みをする
・外部とは1件分のデータはBBSLineクラスでやりとりする
0621nobodyさん2008/12/18(木) 12:24:15ID:???
>>620

『■コントローラ:処理の内容を判断するクラス 』の
>  ・データを表示する
>  ・データを書込む


『 ■モデル:データファイルを管理するクラス 』の
> ・ファイルの読み込み、書込みをする


って、意味が重複しているような感じがするのですが...


ならば、
■コントローラ:処理の内容を判断するクラス
  ・モデルからデータを受け取る
  ・モデルにデータを渡す

とかでは、おかしいですか?
0622nobodyさん2008/12/18(木) 12:52:00ID:???
>>621
>>620じゃないけど。
・データを表示する
・データを書込む
・編集用のフォームを表示する
実際に上記の作業をするのは View と Model だよ。Controllerがするわけじゃない。
コントローラーはどれがリクエストされたかを判断して、適切な Model と View を呼び出す。
0623nobodyさん2008/12/18(木) 16:39:54ID:???
>>469は具体的に何処のコードを批判しているのかが分からないので
どなたか解説を頼みます。
0624nobodyさん2008/12/18(木) 20:10:31ID:???
MVCモデルでM同士で連携することってあり?
それとも必ずC経由?

C経由の場合、Mをなるべく疎結合になるように細分化してると、
Cの各Actionに書くロジック量が半端なく多くなってくるんだよね。
(Aデータを取ってきてBデータを取ってきてBをCバリデータに通してAとBを基にDを作成して・・・みたいな)
一つのAction内にロジックが増えるのもどうかと思うし、それって新しいモデルじゃんという気もしてこないでもない。
0625nobodyさん2008/12/18(木) 20:23:33ID:???
>>624
俺はM同士で連携するかたちでも良いと思うけどね。
CからMを見た場合、あるまとまった処理単位でメソッドを呼び出す形であることが
重要だと思うから。
CがMを使うときは必ずメソッドA呼び出してメソッドB、メソッドCを実行しなければならない。
さらに、そういう3連呼び出しがCの中に何箇所か書かれているなんていうのは再利用性などが
悪くなると思うから。
0626nobodyさん2008/12/19(金) 16:35:55ID:???
試しに掲示板をMVCでやったら、なんかやっとそれっぽくなった。
0627nobodyさん2008/12/19(金) 19:23:16ID:???
>>626
うpきぼん
■ このスレッドは過去ログ倉庫に格納されています