[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/09 09:19 / Filesize : 227 KB / Number-of Response : 595
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

PHPでOOP



1 名前:1 ◆SWtzLesEmM mailto:age [2007/02/23(金) 13:35:52 ID:???]
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^)/

67 名前:nobodyさん [2007/05/12(土) 23:32:04 ID:s118dfiw]
なんていうか「こういうときにはこういう設計をします」っていう
具体的な情報がほしいよな
俺は車なんかプログラミングしないっての

68 名前:nobodyさん [2007/05/14(月) 00:46:15 ID:4QCW9ZwU]
最近ちょっとだけ解ってきた。

なぜOOPなのかと言えば
再利用とメンテナンス、拡張がやりやすい(やりやすく作ることが出来る)ということがすごくて、
そのためにカプセル化とポリモーフィズムがあって
ポリモーフィズムを実現(保証)するために継承や、インターフェイスや抽象クラスがあるって感じなのかな?

PHPによるデザインパターンは読んでみても良いと思う。
あと、ゼンドフレームワーク勉強用にZFで動くブログソフトみたいのあるから、それの仕組みと、ZFのソース(全部はきついけど関係あるところだけ)
を見てみると、結構勉強になると思う。
ttp://www.itmedia.co.jp/enterprise/articles/0702/28/news028.html
ttp://www.itmedia.co.jp/enterprise/articles/0703/05/news013.html
ttp://www.itmedia.co.jp/enterprise/articles/0703/08/news018.html
記事がちょっと古いから最新バージョンと微妙に違うけど。

まあ、このフレームワークが良いか悪いかは別にして(まだベータだし)
OOPバリバリなので、勉強になること間違いなし!

69 名前:nobodyさん mailto:sage [2007/05/15(火) 15:55:34 ID:???]
しかし PHP関連の本でOOPをわかりやすく書いてあるのが



「ない!」 お勧め教えて

70 名前:nobodyさん mailto:sage [2007/05/15(火) 16:01:33 ID:???]
本なんか読むよりPEARやフレームワークのソース読んで
勉強しながら自分なりに書いていけ、金かからないしだしそれが一番の近道
気が付いたらOOPなんて空気のように有って当たり前になるもんだから

71 名前:nobodyさん mailto:sage [2007/05/15(火) 16:06:06 ID:???]
わかりにくいの例として

スコープ演算子(static ::)は2冊読んでもチンプンカンプン
そこでぐぐる先生に聞くと

homepage3.nifty.com/gomi_doji/scopen.htm
PHPではないが、ナルホドナルホドと理解できる

オブジェクト指向の概要も
phpspot.net/php/pg%83I%83u%83W%83F%83N%83g%8Ew%8C%FCPHP.html
を読むとナルホドナルホドだが、本は意味不明になる

糞った本しか読んでいないかもしれないが一応書いておく
「PHP5プログラミング エキスパート編」 //最強の意味不明
「MySQL4/PHP5によるWebデータベース構築」 //わかりやすいがODPの章になると意味不明

72 名前:nobodyさん mailto:sage [2007/05/15(火) 16:08:18 ID:???]
書きながら次第にむかつき度が増加して誤字だらけになった(怒

>>70
それ疲れる

73 名前:nobodyさん mailto:sage [2007/05/15(火) 17:01:49 ID:???]
>>69
独習PHPのクラスらへんの説明は中々分かりやすいよ。
作者があまりいいとはいえんが、ファーストステップにはいい感じ。


74 名前:nobodyさん mailto:sage [2007/05/22(火) 15:14:54 ID:???]
同じ事を色々な言葉で表現するから迷うずら
PHPの本読むよりJAVAの本読んだほうが理解できる罠。

75 名前:nobodyさん mailto:sage [2007/05/28(月) 14:46:00 ID:???]
自分が作るだけなら手続き型でいいけど
人の作ったライブラリ使いたいから
最低限、何が書いてあって何をしているのか読めるようになりたい



76 名前:nobodyさん mailto:sage [2007/05/29(火) 05:34:16 ID:???]
答えが出てるじゃないか。その使いたいライブラリのコードを読め

77 名前:nobodyさん [2007/06/05(火) 12:23:56 ID:/w569Zaf]
OOPS

78 名前:nobodyさん mailto:age [2007/06/05(火) 19:15:58 ID:???]
XOOPS

79 名前:nobodyさん [2007/06/11(月) 22:06:39 ID:2dWIuVC4]
>>65に誰もつっこまないのかよ!!

DBアクセスの為のクラス書くのかw
おそらくPHPインストール時に君のHDDの中にすでに入ってる訳だが…
しかもあらゆるDBに同じ書式でアクセス出来るやつが…


80 名前:nobodyさん mailto:sage [2007/06/11(月) 23:45:37 ID:???]
>>79
なんてやつ?

81 名前:nobodyさん mailto:sage [2007/06/12(火) 00:15:06 ID:???]
PEARのソースは読まない方が身のため

82 名前:nobodyさん [2007/06/12(火) 06:55:41 ID:e4tfCBN5]
79は勘違いしてるが、彼がいいたいのはPearのDBクラスのことだろう

83 名前:nobodyさん mailto:sage [2007/06/12(火) 09:31:07 ID:???]
82が勘違いだろ。
単にPDOだろ

84 名前:1 ◆SWtzLesEmM mailto:age [2007/06/12(火) 10:24:12 ID:???]
>>73
情報提供どうもありがとうございます。
独習PHPは、図書館でかりて読んでみました。
オブジェクト構文の説明は分かりやすいと思いました。

>>79
DBにアクセスするクラスも勉強のため練習で作ってみようと思いました。
その次に、O/Rマッパーの使い方を練習してみることになるでしょうか?

>>82
PHP5に標準で用意されているPDOのことですね。
jp2.php.net/pdo
PHP Data Objects (PDO) 拡張モジュールは、 PHP の中からデータベースにアクセスするための軽量で高性能な インターフェイスを定義します。
PDO は PHP 5.1 以降にバンドルされており、PHP 5.0 では PECL 拡張モジュールとして使用可能です。
PDO は PHP 5 の新機能である オブジェクト指向機能を使用しており、それより前のバージョンの PHP では動作しません。


85 名前:nobodyさん mailto:sage [2007/06/12(火) 10:56:05 ID:???]
mysqliとどっちがいい?



86 名前:nobodyさん mailto:sage [2007/06/12(火) 17:53:32 ID:???]
ふとおもったんだが、>>1はできるんじゃないのか。

87 名前:nobodyさん mailto:sage [2007/06/17(日) 01:20:06 ID:???]
被害者増やさないように書いておく。
「PHPデザインパターン入門」は買うな。

最近買った中で最低レベルの悪書。

どっかの英語ページを機械翻訳したようなトンチンカンな用語説明にまじって
何故かApacheとPHPのインストール方法だけが丁寧な日本語で書かれている。
あとはデザインパターン図が羅列してあるだけ。解説ほぼ無し。
3流大学生のコピペ論文を彷彿とさせる。
こんなの真剣に呼んでも絶対わかるようにはならない。

OOP用語の説明は何故かちゃんとしてないのに
php.iniにページさかれてるけど
網羅して無くて中途半端でページ稼ぎとしか思えない。

中身薄くて有名なヤマダヨウカン本の方がマシに感じるレベル。

88 名前:nobodyさん mailto:sage [2007/06/17(日) 01:28:20 ID:???]
なんか良く読むと、この本は解説の日本語が
オブジェクト指向で書かれてる気がした。

多分最初にパターン名を記載した時点で、作者の頭の中では
記載されてるページを呼び出してるんだろうと思えてきた。

解説するための日本語はプロシージャ指向で書いてくれと
小一時間問い詰めたい。

この本理解するには色んな本を買って、全部理解した後じゃないと
読めない。意味ねえじゃん。

89 名前:nobodyさん mailto:sage [2007/06/17(日) 01:54:28 ID:???]
軽いフレームワークいじって使うのが一番いいオブジェクト指向の勉強だよ

90 名前:nobodyさん mailto:sage [2007/06/17(日) 14:22:50 ID:???]
ウェブアプリにオブジェクト指向なんていらないよ。どうせ文字列を加工してデータベースのテーブルのカラムに並べるだけなんだから。

91 名前:nobodyさん mailto:sage [2007/06/17(日) 18:51:52 ID:???]
じゃどういうときに必須なんよ

92 名前:nobodyさん mailto:sage [2007/06/24(日) 17:09:42 ID:???]
オブジェクト指向と言う言葉にまどわされず、
クラスの勉強をすればいいんだよ。 

単に、呼び出してるだけだから。 

93 名前:nobodyさん mailto:sage [2007/06/24(日) 19:32:38 ID:???]
PEARをサンプルみながら見よう見まねでインスタンス作って
なんだかんだで実際動いてるんだけど何してるかイマイチ理解出来てないんだよね
functionの中でインスタンス作るとその外側ではやっぱアクセスできないのかな
PEARDBのインスタンスがあっちゃこっちゃに散らばっちゃって困る

94 名前:nobodyさん mailto:sage [2007/06/25(月) 12:32:57 ID:???]
>>93
プロパティに入れれ

95 名前:1 ◆SWtzLesEmM mailto:age [2007/07/06(金) 14:33:24 ID:???]
>>68
>拡張がやりやすい(やりやすく作ることが出来る)
そうみたいですね。
www.amazon.co.jp/dp/4822281957/
「オブジェクト指向でなぜつくるのか」
という本にも、クラスを使うメリットが同じように説明されていました。(・∀・)

>>74
Javaの本だと
www.amazon.co.jp/dp/4797331828/
「やさしいJava」をすすめられました。

>>86
(σ・Д・)σプログラミング初心者ですΣ(゚Д゚*)=3

>>89
Zend Frameworkの正式版が出ましたね☆
framework.zend.com/manual/ja/
シンプルなフレームワークを検索したら、CodeIgniterというのがありました。
userguide.cilab.info/




96 名前:nobodyさん [2007/07/08(日) 18:20:46 ID:XFKJF1H9]
最近このスレが怖くて見れん俺ガイル
なんでそんな成長早いんだよ・・・おかしいだろ・・・orz

97 名前:テレビできたよー [2007/07/10(火) 15:53:51 ID:ZIdzImz8]
class TV {
 var $channel;
 var $state;
 var $singleton;
 
 function TV() {
  $this->channel = 1;
  $this->state = false;
 }
 
 function on() {
  if(!$this->state) {
   $this->state = true;
   echo "電源オン<br />";
   $this->reflect();
  } else {
   echo "既に電源はオンになっています<br />";
  }
 }
 
 function off() {
  if($this->state) {
   $this->state = false;
   echo "電源オフ<br />";
  } else {
   echo "既に電源はオフになっています<br />";
  }
 }

98 名前:テレビできたよー [2007/07/10(火) 15:54:22 ID:ZIdzImz8]
 function reflect($c = null) {
  if($this->state) {
   if(!empty($c)) {
    $this->channel = $c;
   }
   
   echo $this->channel . " チャンネルを写します<br />";
  } else {
   echo "電源が入っておりません<br />";
  }
 }
}

$tv = new TV;
$tv->on();
$tv->reflect(8);
$tv->on();
$tv->on();
$tv->off();
$tv->off();
$tv->reflect(5);
$tv->on();


99 名前:nobodyさん mailto:sage [2007/07/11(水) 10:41:20 ID:???]
例外投げるようにすれば?

100 名前:1 ◆SWtzLesEmM mailto:age [2007/07/11(水) 12:59:29 ID:???]
例外処理
www.phppro.jp/word/E4BE8BE5A496E587A6E79086

2. PHPで例外処理
www.phppro.jp/phptips/vol45/eb49e8a31e9132d98a5a7db3df4663e4

PHP5の基本 > 例外処理
www.shigeweb.jp/php/project_p/?section=php5oop&page=exception

phpspot - 例外処理
phpspot.net/php/pg%97%E1%8AO%8F%88%97%9D.html

PHP4ではエラー処理といえば、
if ( ($err = func()) != "" ) {
  die("エラーです");
}
のように戻り値のチェックをしていましたが、エラーというものは、呼び出し側がエラー制御を行うのではなく、呼ばれた側で、どういうエラーがあったか、というものがあった方が自然で、呼ばれた側がエラー処理を行うため、モジュールの場合より再利用性が高くなるでしょう。
更に上記では、どういうエラーが起こってエラーが出ているのかということが想像しにくいですね。
そこで try〜catch です。

■例外処理
www.atmarkit.co.jp/flinux/special/php5/php5d.html
プログラミングにエラー処理は避けて通れない事項だ。
とはいえ、関数やメソッドからの戻り値を毎回エラーチェックするのは煩雑で面倒でもある。
その煩雑さを回避するため、文法として例外処理を持っている言語もある。
PHP5もそれに倣って、言語仕様として例外処理をサポートした。
文法的にはC++やJavaと同様に、try{ }で投げられた例外をcatch{ }で処理するという流れになる。

↑とのことですが、汎用性のある関数やメソッドにしたい場合、エラーが発生したときの処理を書く場所は、関数やメソッドを使う方(呼び出す側)にすることもあるでしょうか?
=戻り値をチェックするというのは、古いやり方なんでしょうか?


101 名前:1 ◆SWtzLesEmM mailto:age [2007/07/11(水) 13:07:20 ID:???]
>>96
PHPプロのメルマガ読んで、知ったかぶりなだけですw
お互いがんばりましょう☆(・∀・)


102 名前:nobodyさん mailto:sage [2007/07/11(水) 14:16:38 ID:???]
いやさ,まず公式マニュアルを読む癖を付けようぜ

103 名前:nobodyさん mailto:sage [2007/07/11(水) 14:44:53 ID:???]
MVCじゃないとOOPなんて意味ないですかr

104 名前:nobodyさん mailto:sage [2007/07/11(水) 17:30:14 ID:???]
( д)      ...。。

105 名前:nobodyさん mailto:sage [2007/07/12(木) 02:57:31 ID:???]
MVCもデザインパターンの一種じゃなかったっけ?



106 名前:nobodyさん mailto:sage [2007/07/12(木) 08:06:18 ID:???]
>>100
なんかphpspotのその文はおかしいな。
エラー処理は例外を使おうがそうじゃなかろうが変わらない。
呼ばれた側はどういうエラーがあったか返す責任があるし、
呼んだ側は返ってきたエラーをチェックする責任がある。
エラーが起きた時の挙動を自分で決めれるならその場で処理すれば良いし、
そこではまだ決められないならさらに上位へreturnなりthrowすれば良い。



107 名前:nobodyさん [2007/07/14(土) 15:28:38 ID:w3CTKtks]
OOPってのはアプリケーションをモノに見立てて、それを構成している部品をクラスとして定義する、ってとこまではなんとなく理解した。

例外処理?なにそれうまいの?

108 名前:nobodyさん mailto:sage [2007/07/14(土) 18:34:23 ID:???]
ダンボールの味がするお

109 名前:nobodyさん mailto:sage [2007/07/14(土) 19:32:25 ID:???]
おまいらオブジェクト指向に騙されてるよ。ただのデータ型に過ぎない。

110 名前:nobodyさん [2007/07/14(土) 19:46:31 ID:w3CTKtks]
今、習作としてプロフィールスクリプト(っていうのも大袈裟なぐらいショボイやつ)を書いてるんだけど、どうにも悩む。悩む。
とりあえず、
-質問と答え(Entry)
--セッタ(SetQuestion,SetAnswer)
--ゲッタ(GetQuestion,GetAnswer)
-それらのEntryを編集したり、操作したりする(ManageEntry)
--POSTされたデータにEntryの値を変更する(EditEntry)
-プロフィール自体(Profiel)
--質問と答えを出力(ViewProfiel)
こんなクラスたちを作ったんだけどなんかおかしい気がしてならない。
とくにManageEntryのとことか。
ManageEntryでEntryオブジェクトの配列Entriesを作っといてそれをそのクラス内で操作とか?は?え?
OOPムズイ、ナキタイ


スレ汚しスマソ

111 名前:nobodyさん mailto:sage [2007/07/14(土) 21:29:40 ID:???]
どんな物を作ってるのかよく分からないけど
ぱっと見で確実に言える事は、個別のクラスが多すぎ。
半分くらい継承とメソッドの追加で済みそう。
今のままだと拡張もやり難そう。

プロフィールが"profiel"なのはつっこんだ方が良いのかな。

CakeとかSynfonyみたいな、ライブラリじゃないフレームワークを
使い込んでソース読んだら、どう設計したらよいか一気に分かるよ。

112 名前:nobodyさん [2007/07/14(土) 22:22:33 ID:w3CTKtks]
継承とメソッドの追加ってどうやるんですか><;
正直どうやったらいいのか全くわからん。
プロフィール?え?あ?あはあは。

113 名前:nobodyさん mailto:sage [2007/07/15(日) 00:13:47 ID:???]
きめぇ

114 名前:nobodyさん mailto:sage [2007/07/15(日) 00:19:07 ID:???]
Synfony はつっこんだ方(ry

115 名前:1 ◆SWtzLesEmM mailto:age [2007/07/26(木) 10:21:49 ID:???]
>>106
>呼ばれた側はどういうエラーがあったか返す責任があるし、
>呼んだ側は返ってきたエラーをチェックする責任がある。

なるほど〜(・∀・)
呼ぶ側と呼ばれた側のそれぞれでエラーの対処があれば、手堅いですね!
大変参考になりました。




116 名前:1 ◆SWtzLesEmM mailto:age [2007/07/26(木) 10:29:09 ID:???]
掲示板の続きを作りました。
DBにアクセスする機能をクラスにしてみました。
kameleon.s241.xrea.com/dokuwiki/doku.php?id=%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A7%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B

動作サンプル
kameleon.s241.xrea.com/oop/bbs2/index.php

なんか、>>55さんのアドバイスの形になってませんが…orz
とりあえず、DBアクセスをクラスの形にできたので一歩前進!!!\(^o^)/

117 名前:1 ◆SWtzLesEmM mailto:age [2007/07/26(木) 10:50:37 ID:???]
>>110
おー、ガンバレ〜〜〜☆

>>111
(1) Entryクラス
文章を「書き込む」メソッド、「読む」メソッド、「書き換える(編集)」メソッド、「削除する」メソッドが用意されている。

(2) Entryクラスを継承して、質問用のクラスを用意
=質問のデータだけを操作できる

(3) Entryクラスを継承して、答え用のクラスを用意
=答えのデータだけを操作できる

というかんじになるんでしょうか?
どういうまとまりでクラスにすればいいのか、そこら辺がなんかよく分からないんですよねー(ノ∀`)


118 名前:nobodyさん mailto:sage [2007/07/26(木) 10:57:58 ID:???]
どうしてPDOをry

119 名前:nobodyさん mailto:sage [2007/07/27(金) 00:44:20 ID:???]
おんにゃにょこの
おっぱい
ぷぴにぷにだにょ〜

120 名前:nobodyさん mailto:sage [2007/07/28(土) 17:35:02 ID:???]
夏だな

121 名前:nobodyさん mailto:sage [2007/07/30(月) 03:51:10 ID:???]
function &foo {
echo "ほげ"


こういうやつ、「リファレンスを返す」っていうんですか?
これはどういう処理をしているんでしょうか?
どこかで定義されているfoo()という関数に何かしているんですか?

122 名前:nobodyさん mailto:sage [2007/07/31(火) 07:40:25 ID:???]
高機能な参照関数だな

123 名前:nobodyさん [2007/08/01(水) 06:30:28 ID:abLVM2kM]
>>87
買ってしまっていたよ。Iteratorまで読んだけど、
分かったような分からないような気分。

説明が少ない&下手なのは分かった。

124 名前:nobodyさん mailto:sage [2007/08/01(水) 22:18:22 ID:???]
分からない人に分かるように書いてないという意味では同意。
書いてあることを全て理解していこうとするとこんがらがってくるしね。
まぁいい頭の体操になったけど。
あんなサンプルのためのサンプルではなく、具体的な使い方と利点が書いてあるとOOP素人にも理解しやすかったかもね。

125 名前:522 [2007/08/26(日) 13:53:57 ID:QzPwO1Nh]
>>117
なんかCakePHP使ってみたんだけど質問と答えを操作するクラス作って云々みたいになって結局>>110と同じような感じになっちゃいましたとさ・・・
「モノ」に書く機能とか読む機能持たせていーの?おしえてえろいひと><



126 名前:nobodyさん mailto:sage [2007/08/26(日) 14:28:30 ID:???]
お前が「モノ」をどう捉えるか次第だよ

127 名前:nobodyさん mailto:sage [2007/08/28(火) 02:25:00 ID:???]
結局どうやってデータを保持したら、人間にとって分かりやすいか、コンピュータにとってやさしいかってことだろ。

128 名前:nobodyさん mailto:sage [2007/10/03(水) 02:51:35 ID:???]
オブジェクト指向は木構造を再現しようとしているだけ。
インスタンスだのオブジェクトだのは枝、茎、葉、花、果実を作るというだけ。
mainでは結果(果実)だけをとりたいから枝やら茎やらは見えなくしとけってことだろ?

129 名前:nobodyさん mailto:sage [2007/10/03(水) 16:27:59 ID:???]
>>128
まあそんな感じだ

130 名前:nobodyさん mailto:sage [2007/10/03(水) 23:45:33 ID:???]
まぁ、ファイルの管理方法も木構造だし、インターネットなんていっても網状でなく、
サーバーを経由した木構造になってることから演算機が理解しやすいデータ構造は木構造である。
こういってしまっても過言ではないと思う。


例えば、手続き型は東京の小さなバイク便が地方への配達を頼まれても東京発で請け負うみたいなもの。
それに対して、OODはヤ○ト運輸が東京で頼まれた配達を一旦、地方の配送センターに送るようなもの。
配達する対象が少なければ、バイク便に頼んだ方が早いかもしれないけど、数が多くなるとヤ○ト運輸。

131 名前:nobodyさん mailto:sage [2007/10/05(金) 01:16:19 ID:???]
うん、ここ数日でオブジェクト思考勉強してて分かったこと。
ちなみに128==130==漏れです。

・オブジェクト指向は木構造
・目的は種の存続、繁栄
・ここでのフローは一つずつだが、間にどれだけの枝が挟まるかは設計次第

クラス設計
 種(プリプロセッサ)から芽が出る(この時点では手続き型でも、OODでもない)
 根クラス…main関数、もしくはmainクラスの設計、遺伝子(設計の違いで木になるかどうかが決定)
 幹クラス…根から養分を吸い上げる(大まかな工程の分類)

オブジェクト生成
 枝クラス…効率的に日光を取得できるよう枝を伸ばす(コンストラクタ)
 葉クラス…光合成を行い、自己生産を行う(メソッド)
 葉緑素クラス…目立たない頑張り屋さん(ライブラリ)
 花クラス…実となるか枯れ落ちるか(オブジェクト)

実行結果
 果実クラス…土に還り、新たな種となりました(プロジェクト成功)

132 名前:nobodyさん mailto:sage [2007/10/05(金) 20:07:34 ID:???]
なんかすぐ動いて実用的で簡単なサンプルください

133 名前:nobodyさん mailto:sage [2007/10/05(金) 20:35:14 ID:???]
package hoge;


my $class=shift;

$ENV{'TZ'} = "JST-9";
my ($sec,$min,$hour,$mday,$mon,$year) = gmtime(time + 9*60*60);
my $obj={'sec'->$sec, 'min'->$min, 'hour'->$hour, 'mday'->$mday, 'mon'->$mon, 'year'->$year};

return bless $obj, $class;

1;



適当に書いてみた。あとは時間をゴニョゴニョするだけ、普通に作ったほうがメリット大きい気もするがキニシナイ!!
ヨウカソマソ参上===[・∀・]ノシ

134 名前:131 mailto:sage [2007/10/05(金) 23:40:29 ID:???]
実際に設計して、作ってみるとオブジェクト指向の本質は"同じことは出来るだけ"しない。
この論理で動いてるような気がしてきた。何でもかんでもオブジェクトにするのではなく、
運搬の頻度が激しいデータ、プログラム中で何度も使用するデータをオブジェクトにする。
そんな感じで合ってるのかな?あと、変数の受け渡しは原則、参照で行うみたいな。

135 名前:131 mailto:sage [2007/10/06(土) 13:37:33 ID:???]
何となく掴めてきた。もっかい木構造で表してみる。

根: プリプロセッサ、送信データ(実行役)
幹: main(効率よく栄養=処理を振り分ける)

[クラス]・・・大規模にもなるとこれが幾重にもネストされる。
  枝: コンストラクタ(葉に栄養=処理を割り振る、葉で生成された養分=オブジェクトを幹に伝える)
  葉: メソッド(オブジェクト=養分を生成する)
  花: オブジェクト(実行結果=果実の手前)

果実: 実行結果(主の繁栄=実行結果が真)

ちなみに実行結果が偽となるのは幹から花に至るまででエラーが起こった場合。


漏れルール
mainは基本的にクラスに指示を与える以外しない。

コンストラクタでオブジェクトの用意を行う。
メンバメソッドはオブジェクトの加工を行う。
コンストラクタからオブジェクトを返す。

mainは次に必要なオブジェクトを作るクラスへ処理を回す。



136 名前:nobodyさん mailto:sage [2007/10/07(日) 12:52:54 ID:???]
日曜日1GET!
始めまして
まだPHP3ヶ月目ですが早くもオブジェクト指向で挫折><
ちなみに
・「基礎PHP」
・「PHP5であなたもウェブアプリが作れる!」
・「速効!図解プログラミングPHP + MySQL」
を参考書にしています。

分かりやすかったのは基礎PHPです。
掲示版からスケジュール管理に移るところで
Smarty関連を追加するため承継とか出てきてなるほどと思いました。

ただソース理解しても自分では何もできないんですけどねw

137 名前:nobodyさん mailto:sage [2007/10/07(日) 19:12:30 ID:???]
掲示板の改良はどうします?


138 名前:nobodyさん mailto:sage [2007/10/07(日) 21:04:45 ID:???]
丸投げします

139 名前:nobodyさん mailto:sage [2007/10/07(日) 21:09:36 ID:???]
OOPで作ったやつの
ソースとかうpったら
なんか色々言ってもらえるんかな?
このスレでは

140 名前:nobodyさん mailto:sage [2007/10/07(日) 21:46:16 ID:???]
>>139
自分も変なソースですけど味見してもらえます?
恥ずかしいです><

141 名前:nobodyさん mailto:sage [2007/10/08(月) 09:30:37 ID:???]
>>133
これをどうやって使えばいいんですか

142 名前:nobodyさん mailto:sage [2007/10/08(月) 19:27:30 ID:???]
なかなか面白いブログを発見しました。
ぜひ皆さんに見てもらって意見聞きたいな^^

blogs.itmedia.co.jp/tamaki/2006/06/post_57ab.html


143 名前:nobodyさん mailto:sage [2007/10/09(火) 22:34:59 ID:???]
MVCのコントローラについてどこまでクラスにするか迷っています・・・

144 名前:nobodyさん mailto:sage [2007/10/10(水) 16:06:50 ID:???]
ハァ?

145 名前:nobodyさん mailto:sage [2007/10/12(金) 03:46:51 ID:???]
意味わかんね
どこまでクラス?



146 名前:nobodyさん mailto:sage [2007/11/12(月) 13:32:18 ID:???]
まずはモデルでしょ

147 名前:nobodyさん [2007/12/13(木) 08:37:25 ID:Q/a8rTy0]
SPLって使ってる人実在するの?

jp2.php.net/manual/ja/ref.spl.php

148 名前:nobodyさん mailto:sage [2007/12/14(金) 02:09:52 ID:???]
例外はよく使う

149 名前:nobodyさん mailto:sage [2007/12/19(水) 01:29:29 ID:???]
>>147
読み込んでも八割がた無駄なので使わない

150 名前:nobodyさん mailto:age [2007/12/23(日) 12:51:26 ID:???]
かしゆか誕生日おめでとう!
www.tkma.co.jp/tjc/j_pop/perfume/profile.html


151 名前:nobodyさん mailto:sage [2007/12/24(月) 10:55:41 ID:???]
>>149
つりですか?

152 名前:nobodyさん [2007/12/29(土) 00:05:37 ID:4ZpocZiG]
MVCのCってどうやって書けばいいのかわからんぜ。

153 名前:nobodyさん mailto:sage [2007/12/29(土) 02:00:56 ID:???]
その概念中でコントローラーが理解出来ないってやつ初めてみた

とりあえずView上で必要な操作を徹底的にControllerに切り離すが良い。
そしてModelからデータを引き出して必要があれば書き込み更新してやりなさい。

154 名前:nobodyさん mailto:sage [2007/12/31(月) 19:44:35 ID:???]
ユーザークラスで新規登録処理をして、そのときにユーザークラスの中で
プロフィールクラスのオブジェクトを作ってプロフィールの登録もする

これってしいて言えば何パターン?

155 名前:nobodyさん mailto:sage [2007/12/31(月) 19:47:57 ID:???]
ワンパターン



156 名前:nobodyさん mailto:sage [2008/01/01(火) 00:16:32 ID:???]
パターンというかコンポジションでそ

157 名前:nobodyさん mailto:age [2008/01/29(火) 11:18:04 ID:???]
模範解答は無いけれど、以下の相互変換を行うクラス(ChStr)をみんなで
作ってみるという案はどうかな?
そして、これが出来たら、ログファイルに保存などの機能をつけ、
wikiみたいに編集が出来る機能を追加していくという感じに。

<編集>
-------------------------------------------------------------
= 2ch
'''2ch'''とは、総合掲示板のことである。
link:[www.2ch.net]
-------------------------------------------------------------

<出力>
-------------------------------------------------------------
<b><font size="+1">2ch</font></b><br>
<b>2ch</b>とは、総合掲示板のことである。<br>
link:<a href="www.2ch.net">www.2ch.net</a><br>
-------------------------------------------------------------

158 名前:1 ◆SWtzLesEmM mailto:age [2008/01/29(火) 11:29:32 ID:???]
>>157
OOPの勉強というよりも、どちらかというと正規表現の勉強になるでしょうか?
wikiのパーサーつくるなら、既存のwikiスクリプトや、PEARのText_Wikiが参考になるかもしれませんね。

www.phppro.jp/news/172
PEAR::Text_Wiki 1.2.0RC1 リリース 2006年10月11日
labs.cybozu.co.jp/blog/tsuruoka/anubis/blog_show/18
Text_PukiWikiリリース

159 名前:nobodyさん mailto:age [2008/01/29(火) 11:43:55 ID:???]
>>158
C++のOOPの勉強として、文字列を簡単に扱うことが出来るクラスを
自作してみるという演習があったので、それをPHPでもやってみようかなと
思ったものです。
Cでは、文字列を結合したり、splitしたりするのが結構大変なので、
この演習が役に立ったなと思っていたのです。
PHPの場合は、関数を使えばそれで終わってしまうので、もう少し
ひねりを入れたものを考えて見ました。

正規表現を練習するというよりも、正規表現とhtmlの相互変換をする
クラスがあると、プログラムをする際、便利だなという事が実感
出来るのでは?という意味合いです。

(例)正規表現を格納し、html出力する過程。
$text に textarea タグの文字列を格納する。
$str = new ChStr($text);
echo "<html><body>";
$str->Write_html();
echo "</body></html>";

ほら、このクラスがあるとレイアウトを変えたりが、やり易い上に
再利用性が高いでしょ?みたいな。

160 名前:1 ◆SWtzLesEmM mailto:age [2008/01/29(火) 11:47:24 ID:???]
OOPの参考になる解説がありました。

PHPのclass、オブジェクト指向プログラミングに関する質問です。
q.hatena.ne.jp/1187962431

2番の回答者の解説が分かりやすいと思いました。
6番の回答者のサンプルコードも参考になりましたが、これは「インターフェース」の利用方法ではありませんね。><

インターフェイス
www.phppro.jp/phpmanual/php/language.oop5.interfaces.html
あるクラスが実装する必要があるメソッドの種類を、これらのメソッドの実体を定義することなく、指定するコードを作成できるようになります。
インターフェイスはキーワードinterfaceにより定義され、通常のクラスと同様に定義することができますが、メソッドの実装は全く定義されません。

161 名前:1 ◆SWtzLesEmM mailto:age [2008/01/29(火) 12:00:16 ID:???]
>>159
なるほど!(・∀・)
文字列を扱う処理は、いろんなところで出番がありそうですね!
wikiの文法(表記方法)が使える掲示板とか作れそう^^

162 名前:nobodyさん mailto:age [2008/01/29(火) 12:04:23 ID:???]
ChStr クラス の設計はこんな感じかな。

メンバ
private $m_str; // 正規表現文字列を格納する。

コンストラクタ
ChStr($str) // 正規表現の文字列を受け取る。

private メソッド
ch_to_html() // 正規表現をhtmlに変換する。

public メソッド
Write_html() // 格納している文字をhtmlで出力する。
Write_text() // 格納している文字を正規表現で出力する。

---------------------------------------------------
本当は、ログファイルへの保存や読み取りなどを機能として
考え、そのあたりまで含めたクラスの設計をした方が
いいんだろうけれど、まずは簡潔にする方向でいきます。
で、後々拡張の方向で。

163 名前:1 ◆SWtzLesEmM mailto:age [2008/01/29(火) 12:04:44 ID:???]
PHPのインターフェースは、Javaとかのインターフェースとはちょっと違っているみたいですねー。><
(…使ったことないので実感がありませんが^^)

PHPでは実装済みのinterfaceを多重に実装できない
blog.xole.net/article.php?id=589
blog.xole.net/article.php?id=597

164 名前:1 ◆SWtzLesEmM mailto:age [2008/01/29(火) 12:25:09 ID:???]
>>162
こんなかんじのプログラムと似ているかもしれませんねー。

60行で作るPHP用テンプレートエンジン
anond.hatelabo.jp/20071030034313
>テンプレートの中身を置換する
>function convert_string($s)

↑置き換えるパターンに応じて、別々のメソッドを用意したら便利でしょうか?
= 文字サイズ変更、''' 強調、link: リンクとかの記法の置換を担当するprivateメソッド

165 名前:1 ◆SWtzLesEmM mailto:age [2008/01/29(火) 12:34:03 ID:???]
OOPの参考になる解説がありました。

関数、オブジェクト、クロージャ
d.hatena.ne.jp/brazil/20060131/1138692196
>オブジェクトは、データに処理がくっついたものです。
>array.map()のように、後に後に処理を追加していく書き方は、順にコードを追えるため読みやすく、また書きやすいです。

クロージャっていう仕組みは、PHPにはないですね?><
大は小を兼ねる…クロージャの代わりにオブジェクトが使えればとりあえずOKかな?(・∀・)



166 名前:nobodyさん mailto:sage [2008/01/29(火) 13:15:31 ID:???]
>>161
>wikiの文法(表記方法)が使える掲示板とか作れそう^^

PEARのText_Wiki使えばよくね?

167 名前:nobodyさん mailto:age [2008/01/29(火) 13:18:38 ID:???]
>>164
> 置き換えるパターンに応じて、別々のメソッドを用意したら便利でしょうか?
本来ならば、そうなるでしょうね。それらはすべてprivateで作っておいて、
外部には、一つのインターフェースのみ(この例の場合はWrite_html()がそれに該当)
公開となるでしょう。
記号ごとに別々にメソッドを定義しておけば、記号とhtmlの関係が変わる時は、
どのメソッドを触ればよいかが分かるし、それを変更したことで、
他のメソッドには影響は無かったりします。
(これが構造化プログラムの場合は、目的のソースと目的ではないソースを
見極めるところから始まります。)

-------------------------------------------------------------------------
この ChStr に汎用性を持たせる場合は、Write_html()というよりも、
Get_html()とし、html文字列を return する事になるでしょう。
そうすると、別なプログラムで、「出力結果をファイルに保存する」という
使い方も出来ます。しかし、今回は初回なので、Write_html()とし、
メソッド内部で echo 使うことにします。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<227KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef