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はテンプレート
351 ◆SWtzLesEmM
2007/02/27(火) 15:21:07ID:???レスを投稿する
ニュース
- 【W杯】ブラジルFWクーニャ、塩貝へ「これで俺らのことが分かっただろう」SNS投稿 「謙虚になれよ」が繰り返される曲流す ★2 [ネギうどん★]
- 【サッカー】塩貝健人、挑発されるも「仕方ない」 出番なしで…発言を弁解「弱いと言いたかったわけじゃ」 [王子★]
- 強豪オランダもPK戦でモロッコに敗れる…ドイツに続き欧州強国2チームが32強でまさかの終了★2 [王子★]
- 【円安】1ドル162円台まで下落 円相場が39年半ぶりの円安ドル高水準に ★2 [ぐれ★]
- ブラジルに敗れた日本代表…スペインメディアはどう報じた?「ネイマールを嘲笑った日本人たちをヴィニシウスがだまらせた」 [王子★]
- 【W杯】ブラジルに敗れた森保監督「これからも世界一を目指して日本のために頑張りたい」★2 [ネギうどん★]
- 日本企業さん、日中関係の悪化でレアアースを必要量確保できず、やむを得ず製品に組み込み密輸してしまったことが発覚。これ誰の責任? [668024367]
- 【失笑】日本人さん、球蹴りでの現実逃避を諦めふたたび大谷で現実逃避開始!! [194819832]
- 経産省、ソフトバンク主導の国産AI新会社に3873億円プレゼント [256556981]
- 長友佑都(39)「5度目のW杯は『青春』だった。そして青春が終わってしまって寂しい。森保さんを優勝監督にしたかった」 [683137174]
- Q:なぜ日本人は反中なのか?A:中国が落ちたら日本が上がると本気で信じてるからwww [354616885]
- 日本はベスト8に入るための努力をしろ