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^)/
PHPでOOP
11 ◆SWtzLesEmM
2007/02/23(金) 13:35:52ID:???2007/02/23(金) 13:38:15ID:???
初心者にもわかるようにメリットぐらいかいてよ・・。
2007/02/23(金) 13:41:55ID:???
インスタンスとインヘリタンスがまぎわらしい(なぜか変換・・・
41 ◆SWtzLesEmM
2007/02/23(金) 13:42:26ID:??? オブジェクトと関数の本質的な違いと使い分け
ttp://d.hatena.ne.jp/toku-hiro/20060826
var とか this って何だ?
ttp://d.hatena.ne.jp/toku-hiro/20060902
アクセサメソッド
ttp://d.hatena.ne.jp/toku-hiro/20061022
継承、 オブジェクトコンポジション
ttp://d.hatena.ne.jp/toku-hiro/20061129
ttp://d.hatena.ne.jp/toku-hiro/20061203
ttp://d.hatena.ne.jp/toku-hiro/20060826
var とか this って何だ?
ttp://d.hatena.ne.jp/toku-hiro/20060902
アクセサメソッド
ttp://d.hatena.ne.jp/toku-hiro/20061022
継承、 オブジェクトコンポジション
ttp://d.hatena.ne.jp/toku-hiro/20061129
ttp://d.hatena.ne.jp/toku-hiro/20061203
51 ◆SWtzLesEmM
2007/02/23(金) 13:51:33ID:??? >>2
ttp://d.hatena.ne.jp/toku-hiro/20060826
この説明見てなるほどな〜〜〜!と思いました^^
>(1) オブジェクトと関数の本質的な違いと使い分け
>コーディング上の本質的な違いは「変数を保持できるか否か」に尽きます!
>関数を定義するときには、(グローバル変数を除き)引数として関数の外部から渡し、return で返すことしかできませんが、クラスは内部で変数を定義でき、クラスの実体のオブジェクトはどこからでも内部変数を引き出すことができます。
>定義関数の return であれもこれも返したいのにうまく返せず、煩雑な配列に格納して返す…といったことが減ると思います。
>あれもこれも引数として渡したいとき、または、あれもこれもreturnしたいときは、関数よりクラスの方が遥かに簡単です。
「クラス」という仕組は便利そうですね。クラスを考えた奴、偉い!
ttp://d.hatena.ne.jp/toku-hiro/20060826
この説明見てなるほどな〜〜〜!と思いました^^
>(1) オブジェクトと関数の本質的な違いと使い分け
>コーディング上の本質的な違いは「変数を保持できるか否か」に尽きます!
>関数を定義するときには、(グローバル変数を除き)引数として関数の外部から渡し、return で返すことしかできませんが、クラスは内部で変数を定義でき、クラスの実体のオブジェクトはどこからでも内部変数を引き出すことができます。
>定義関数の return であれもこれも返したいのにうまく返せず、煩雑な配列に格納して返す…といったことが減ると思います。
>あれもこれも引数として渡したいとき、または、あれもこれもreturnしたいときは、関数よりクラスの方が遥かに簡単です。
「クラス」という仕組は便利そうですね。クラスを考えた奴、偉い!
61 ◆SWtzLesEmM
2007/02/23(金) 13:54:53ID:???2007/02/23(金) 15:12:49ID:???
2007/02/23(金) 16:52:36ID:???
トリップ出してるのに自作自演もくそもあるのかw
101 ◆SWtzLesEmM
2007/02/23(金) 19:44:43ID:??? >>7
>Webでオブジェクト指向
>http://pc10.2ch.net/test/read.cgi/php/1133489897/
>こっちじゃ何故駄目なんだ?
そっちも参考に眺めています。
あと、プログラマー板にもあるオブジェクト指向関係のスレもちょっと眺めています。
PHPに的を絞った情報が欲しいので、専用のスレを立ててみました。
もちろん、JavaやRuby、Pythonとかも使えればいいけど、そこまで手を広げる時間がないので、とりあえず今の段階ではPHPで勉強。
PHPを使っていて、オブジェクト指向プログラミングのやり方を勉強したい人がいたら一緒に勉強していきましょう。
よろしく(・∀・)
>Webでオブジェクト指向
>http://pc10.2ch.net/test/read.cgi/php/1133489897/
>こっちじゃ何故駄目なんだ?
そっちも参考に眺めています。
あと、プログラマー板にもあるオブジェクト指向関係のスレもちょっと眺めています。
PHPに的を絞った情報が欲しいので、専用のスレを立ててみました。
もちろん、JavaやRuby、Pythonとかも使えればいいけど、そこまで手を広げる時間がないので、とりあえず今の段階ではPHPで勉強。
PHPを使っていて、オブジェクト指向プログラミングのやり方を勉強したい人がいたら一緒に勉強していきましょう。
よろしく(・∀・)
12nobodyさん
2007/02/23(金) 21:34:47ID:???13nobodyさん
2007/02/23(金) 22:38:47ID:???141 ◆SWtzLesEmM
2007/02/23(金) 23:18:48ID:??? Googleで「PHP オブジェクト指向」を検索
http://www.google.co.jp/search?q=PHP+%83I%83u%83W%83F%83N%83g%8Ew%8C%FC
よさげなサイトをピックアップしてみよう!
http://www.google.co.jp/search?q=PHP+%83I%83u%83W%83F%83N%83g%8Ew%8C%FC
よさげなサイトをピックアップしてみよう!
151 ◆SWtzLesEmM
2007/02/23(金) 23:23:43ID:???161 ◆SWtzLesEmM
2007/02/23(金) 23:49:00ID:??? http://www.mogurin.net/index/php.obj.inc.html
PHP4のOOPについて、簡単な説明がありました。
PHP5のOOPは、PHP4のOOPに変更が加えられているので、ちょっと違う部分があります。
PHP4のOOPについて、簡単な説明がありました。
PHP5のOOPは、PHP4のOOPに変更が加えられているので、ちょっと違う部分があります。
171 ◆SWtzLesEmM
2007/02/24(土) 00:03:56ID:??? PHP4のオブジェクト指向、デザインパターンについての説明がありました。
http://www.aglabo.com/agl/proevo/PHP/objectbrain/4-composite2.html
PHP5のオブジェクト指向について説明がありました。
http://www.doyouphp.jp/php5/
オブ脳 in PHP
http://www.aglabo.com/agl/proevo/PHP/objectbrain/
「委譲」などの説明がありました。
今の段階では、ちょっとよく理解できませんでしたがこんな話もあるんですね。
http://www.aglabo.com/agl/proevo/PHP/objectbrain/4-composite2.html
PHP5のオブジェクト指向について説明がありました。
http://www.doyouphp.jp/php5/
オブ脳 in PHP
http://www.aglabo.com/agl/proevo/PHP/objectbrain/
「委譲」などの説明がありました。
今の段階では、ちょっとよく理解できませんでしたがこんな話もあるんですね。
18nobodyさん
2007/02/24(土) 00:47:36ID:??? 初心者のおれも学習するから講義すすめてくれ
19nobodyさん
2007/02/24(土) 01:05:02ID:???20nobodyさん
2007/02/24(土) 13:35:58ID:??? オブジェクトを利用すると何がいいのか一言でまとめて
21nobodyさん
2007/02/24(土) 13:43:25ID:??? プロとしての自信が持てるようになります
221 ◆SWtzLesEmM
2007/02/24(土) 16:26:54ID:??? とりあえず簡単なWEBアプリケーションを作りながらOOPの勉強をしてみたいです。
OOPで掲示板を作ってみたいです。
(1)最初はOOPを使わないで掲示板を作ってみる
(2)次にOOPで同じ掲示板を作ってみる
という流れにすると、対比によってOOPが理解しやすくなるでしょうか?
=始めに完成形ありきと。
OOPで掲示板を作ってみたいです。
(1)最初はOOPを使わないで掲示板を作ってみる
(2)次にOOPで同じ掲示板を作ってみる
という流れにすると、対比によってOOPが理解しやすくなるでしょうか?
=始めに完成形ありきと。
231 ◆SWtzLesEmM
2007/02/24(土) 16:34:22ID:??? 掲示板の機能としては、
(1)名前とタイトルと本文を入力&投稿できる。
(2)投稿の一覧(タイトル+投稿日時)が表示できる。
(3)投稿の詳細内容(1つ1つの投稿を個別に閲覧)が表示できる。
という最低限の機能で作ってみて、
後から徐々に機能を追加して拡張してみましょう。
(1)名前とタイトルと本文を入力&投稿できる。
(2)投稿の一覧(タイトル+投稿日時)が表示できる。
(3)投稿の詳細内容(1つ1つの投稿を個別に閲覧)が表示できる。
という最低限の機能で作ってみて、
後から徐々に機能を追加して拡張してみましょう。
241 ◆SWtzLesEmM
2007/02/24(土) 16:45:34ID:??? データベースは普段MySQLを使ってます。
文字化け対策が面倒くさいので、文字コードはUTF-8(UTF-8N)にしときます。
テーブル名は、message
カラムは、
message_id (int not null auto_increment) ←主キーにする
name (text)
title (text)
message (text)
create_date (datetime または年月日時分秒の14桁でvarchar(14))
の5個にしてみましょう。
テーブル名やカラム名の付け方は、
複数形(messages)と単数形(message)のセットで命名したりとか、
主キーは単に「id」としておく方が分かりやすいでしょうか?
ラーメンの具でメンマが9切れのっているか10切れのっているかという違い…些細なことはどうでもいいか。
文字化け対策が面倒くさいので、文字コードはUTF-8(UTF-8N)にしときます。
テーブル名は、message
カラムは、
message_id (int not null auto_increment) ←主キーにする
name (text)
title (text)
message (text)
create_date (datetime または年月日時分秒の14桁でvarchar(14))
の5個にしてみましょう。
テーブル名やカラム名の付け方は、
複数形(messages)と単数形(message)のセットで命名したりとか、
主キーは単に「id」としておく方が分かりやすいでしょうか?
ラーメンの具でメンマが9切れのっているか10切れのっているかという違い…些細なことはどうでもいいか。
251 ◆SWtzLesEmM
2007/02/24(土) 16:53:26ID:??? MySQL5.0で、phpMyAdminを使って、oop_testというデータベースを1個新設しました。
その中にテーブルを1個作りました。
CREATE TABLE `message` (
`message_id` int(11) NOT NULL,
`name` text,
`title` text,
`message` text,
`create_date` datetime default NULL,
PRIMARY KEY (`message_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
日付はとりあえずdatetime型にしておきました。
MySQL4.0を使っている人は、上記のSQL文から「DEFAULT CHARSET=utf8」という句を削らないとエラーになると思います。
その中にテーブルを1個作りました。
CREATE TABLE `message` (
`message_id` int(11) NOT NULL,
`name` text,
`title` text,
`message` text,
`create_date` datetime default NULL,
PRIMARY KEY (`message_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
日付はとりあえずdatetime型にしておきました。
MySQL4.0を使っている人は、上記のSQL文から「DEFAULT CHARSET=utf8」という句を削らないとエラーになると思います。
261 ◆SWtzLesEmM
2007/02/24(土) 17:00:26ID:??? 画面は、>>23の(1)〜(3)の3画面を用意すればOKかな?
画面(ハリボテ)を先に作ってみて、それにプログラムを付けて動くようにしてみます。
(1)入力ページ input.php
(2)一覧ページ list.php
(3)詳細ページ message.php
http://itpro.nikkeibp.co.jp/article/COLUMN/20070214/261859/
「HTML画面をそのまま仕様書に」,5カ月で1000画面を構築した就職サイトPuffの高速開発手法
画面(ハリボテ)を先に作ってみて、それにプログラムを付けて動くようにしてみます。
(1)入力ページ input.php
(2)一覧ページ list.php
(3)詳細ページ message.php
http://itpro.nikkeibp.co.jp/article/COLUMN/20070214/261859/
「HTML画面をそのまま仕様書に」,5カ月で1000画面を構築した就職サイトPuffの高速開発手法
27nobodyさん
2007/02/24(土) 18:52:22ID:??? wktk
281 ◆SWtzLesEmM
2007/02/24(土) 20:07:40ID:??? >>25
主キーをオートインクリメント(連番の)の設定にしておくのを忘れてました。orz
CREATE TABLE `message` (
`message_id` int(11) NOT NULL auto_increment,
`name` text,
`title` text,
`message` text,
`create_date` datetime default NULL,
PRIMARY KEY (`message_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
主キーをオートインクリメント(連番の)の設定にしておくのを忘れてました。orz
CREATE TABLE `message` (
`message_id` int(11) NOT NULL auto_increment,
`name` text,
`title` text,
`message` text,
`create_date` datetime default NULL,
PRIMARY KEY (`message_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
29nobodyさん
2007/02/25(日) 02:57:19ID:??? サンプルページ公開して
302
2007/02/25(日) 16:11:09ID:??? 定番のhelloを表示w
class hello {
var $aisatu = "こんにちは";
}
$re = new hello();
$aisatu = $re->aisatu;
echo $aisatu;
読み図ら買ったら適当に改行して
class hello {
var $aisatu = "こんにちは";
}
$re = new hello();
$aisatu = $re->aisatu;
echo $aisatu;
読み図ら買ったら適当に改行して
312
2007/02/25(日) 16:19:08ID:??? #オブジェクト学校のhelloクラスを作る
class hello {
#このクラスに生徒である$aisatu君がいる
#彼に「こんにちは」という言葉を覚えさせる
var $aisatu = "こんにちは";
#放課後なので括弧で閉じる
}
#クラスの風景を覗くための魔法
$re = new hello();
#生徒$aisatu君に「こんにちは」を言わせるための魔法を矢で飛ばす。
#魔法で生徒$aisatu君の$は壊れてしまい、以下のような記述になる。。
$aisatu = $re->aisatu;
#魔法にかかった生徒挨拶君をおまえらのディスプレイに召還する。
echo $aisatu;
class hello {
#このクラスに生徒である$aisatu君がいる
#彼に「こんにちは」という言葉を覚えさせる
var $aisatu = "こんにちは";
#放課後なので括弧で閉じる
}
#クラスの風景を覗くための魔法
$re = new hello();
#生徒$aisatu君に「こんにちは」を言わせるための魔法を矢で飛ばす。
#魔法で生徒$aisatu君の$は壊れてしまい、以下のような記述になる。。
$aisatu = $re->aisatu;
#魔法にかかった生徒挨拶君をおまえらのディスプレイに召還する。
echo $aisatu;
32nobodyさん
2007/02/26(月) 16:35:48ID:??? コードの解説なんてしなくても見ればわかる。
「なぜOOP」か、だとか、
こういう場合にOOPが役立つ、というのを具体的なコードで示してくれ
「なぜOOP」か、だとか、
こういう場合にOOPが役立つ、というのを具体的なコードで示してくれ
33nobodyさん
2007/02/26(月) 18:41:14ID:??? namespace は結局 PHP5 では実装されなかったんだね・・・・
悲しい。悲しすぎる。
悲しい。悲しすぎる。
34nobodyさん
2007/02/26(月) 23:07:07ID:??? MVCのMをOOPでCは手続きVはテンプレート
レスを投稿する
ニュース
- 佐藤二朗 ハラスメント報道にコメント「大変残念。全ての事実が明らかになることを望みます」所属事務所「到底受け入れられない」★48 [Ailuropoda melanoleuca★]
- 元AKB48・大島麻衣、デート代は“男性が払うべき”主張 「好きな人との時間を買わせてもらったってぐらいの気持ちの男じゃないとダメ」 [ネギうどん★]
- 【W杯】塩貝健人の撤回しない#ュ言にブラジルが再反発「謝罪なし」「ブラジル人を再び挑発した」 [ネギうどん★]
- 《配信中に殺害後の顔面をアップに…》頭を蹴って「死んでますかね」女性ライバー惨殺の高野被告、法廷で明かされた“凶行の一部始終” [ネギうどん★]
- 佐藤二朗 ハラスメント報道にコメント「大変残念。全ての事実が明らかになることを望みます」所属事務所「到底受け入れられない」★49 [Ailuropoda melanoleuca★]
- 「クールジャパン機構」大赤字の責任どこに 失敗続き官製ファンドの甘さ露呈 赤沢亮正経産大臣は「経済産業省として重く受け止める」 [煮卵★]
- 【MLB】ドジャース vs パドレス ★6
- 【MLB】ドジャース vs パドレス ★7
- 【地上波/DAZNほか】 FIFAワールドカップ2026 総合スレ★311【メキシコ/カナダ/アメリカ】
- 巨専】
- 小倉競馬 2回3日目
- 〓たかせん〓
- ワガママボディ🌸🏡(ピンデブ)👶
- 【悲報】プロゲーマーを目指すZ世代さん、栃木から千葉まで6時間もかけてEスポーツの専門学校(学費499万円)に通ってしまうwwwwwwwwwwww [257926174]
- 佐藤二郎「死んでもお詫びしきれない。」 [153490809]
- 中国による制裁を受けた日本、エアコンからレアアースを抽出することになる…許さんぞ中国😡 [583597859]
- 【画像】安倍晋三「できない理由を考えるのではなく!」 この時のマイク実物が公開される [597533159]
- 【悲報】この漫画くっそつまんないねw→信者がマジ激怒する漫画wwwwwwwwwwwwwwwwwwwwwwwwww [776230294]