Webでオブジェクト指向プログラミング (442レス)
上下前次1-新
305(1): 2007/02/05(月)15:03 ID:??? AAS
PHPはオブジェクト指向言語ではありません
306: 2007/02/06(火)00:14 ID:??? AAS
>>305
それだから、PHPでオブジェクト指向はしない...と思っていたんだけど
最近ちょっとずつやってみている。
しかし一番最初に触った言語がPHPだったもんだから、この前
C言語を勉強しているときに「あー、やっぱPHPって気持ち悪いな」って思った。
なんか仕様がグダグダだし、10年くらいすれば忘れられそうだなとか思った。
307: 2007/02/06(火)12:33 ID:??? AAS
10年後には確実に気持ちいい言語になってるのがPHPだけどな
308: 2007/02/06(火)13:31 ID:??? AAS
それだけは無いな
309: 2007/02/06(火)13:46 ID:zUpPH+yJ(1) AAS
10年前のPHP3の時は地獄のようでした
310(2): 2007/02/06(火)18:47 ID:urembAfZ(1) AAS
オブ脳とPHPデザパタを読んでオブジェクト指向というのを実践しようとしたけど、
ちゃんとわかってないからか、酷いスパゲッティーになる気がして途中でやめた。
中途半端なオブジェクト指向を解説してるところはないのかな。
俺の今の思考↓。
クラスのメリット
・関数を纏められるの。
・纏めた関数だけ扱う変数を作れる。
・継承のおかげで、元は残したまま拡張した纏まりを別の場所で使える
311: 2007/02/06(火)21:26 ID:??? AAS
よし、オブジェクト指向で書くぞ!って書くもんじゃなくて
気づいたら知らぬ間にOOで書いてるもんだ
312: 2007/02/07(水)00:55 ID:??? AAS
>>310
クラスを処理関数郡的に捕らえると、クラスが肥大化したりするかもな。
どちらかというと、データに処理機能を添わせると考えた方がよさそげ。
313: 2007/02/08(木)08:51 ID:??? AAS
手続き型で書かれたスクリプトをclassで囲んで、
処理を関数で小分けして、例外かましただけ、
みたいなのあるよね
継承、再利用、知るかボケみたいな
俺がまさに今やってることだけど(´・ω・`)
314(1): 2007/02/10(土)02:36 ID:??? AAS
他の人はどうか知らんのだけど、俺個人レベルでは
再利用や拡張のためにクラスを書いたり継承したりはあんまりない。
多態性を持たせるための手段として継承させる程度かな。
PHP5時代の本は買ったことないのだけど、PHP4の時代は
継承による拡張ばかり取り上げていて、カプセル化とか多態性の
ことはあまり取り上げられてなかった希ガス。まぁPHPもデザパタが
取り上げられているので多態性については出てくるでしょうけどカプセル化は?
PEARのDB(MDB2)もFetchモードがObjectのとき、StdClassだけじゃなくて
XmlSerializerみたいにクラスを指定できたらいいなと思うのは変?
>>310にあるメリットは、結果であって目的ではないと思う、
と思えるようになった今日この頃w
315: 2007/02/11(日)02:42 ID:??? AAS
オブジェ糞指向はうんこだな
人類は新しいパラダイムを発明してくてる天才を必要としている
316: 2007/02/11(日)05:00 ID:??? AAS
オブジェクト指向はどう見ても最高だろ
317(1): 2007/02/14(水)02:12 ID:??? AAS
PHPでは、結局、カプセル化、抽象化できる部分をクラスにして、
手続き型の部分から呼び出す方法に落ち着いた
MVCでいうと
Mをクラスで、Cを手続き型で、Vをテンプレートエンジンでやるというのが
わかりやすくてよいと思った。
ポリモーフィズムって、PHPで実現するのが面倒だと思うけど、どう?
318: 2007/02/19(月)01:18 ID:??? AAS
djangoでいうMVTだな。
319(1): 2007/02/19(月)01:29 ID:??? AAS
>>314
>継承による拡張ばかり取り上げていて、カプセル化とか多態性の
>ことはあまり取り上げられてなかった希ガス。
そもそも4はメンバメソッド全てがパブリックなんで、
カプセル化の概念自体皆無。
説明しようにも、カプセル化の機能自体が無いので不可能。
320(1): 2007/02/19(月)03:34 ID:??? AAS
>>319
言いたいことはわかるけど、概念自体皆無とか不可能ってのは言い過ぎじゃね?
そもそもオブジェクト指向ってオブジェクト単位で独立した存在にするだろ。
だから、カプセル化=独立 であって カプセル化=隠蔽 ではないと思う。
PEARもPrivateメソッドやフィールドは先頭にアンダーバー(_)をつけるなど、
コーディング規約で決めてるわけだし。
もちろん、規約であって言語仕様じゃないから、
簡単にアクセスできて崩壊してしまうがの。
321(1): 2007/02/19(月)03:48 ID:??? AAS
カキコ後に読み直して
> カプセル化=隠蔽 ではない
は言い過ぎだったかな。
オブジェクトを独立させる為にカプセル化を行う。
隠蔽はカプセル化を厳密に行う手段(手法)ってことでどぉ。
322(1): 2007/02/20(火)05:29 ID:??? AAS
>>320
そんな規約定めてるPEAR自身、アンダーバーがついてるプライベートであるはずのメンバに
パブリックアクセスしてる件について
323: 2007/02/20(火)05:34 ID:??? AAS
>>321
4の解説書なんだから、コーディング規約のことまでいちいち面倒見る必要無いだろ。
概念として説明してもかえって紛らわしいだけ。
だからPHP5が生まれたわけで。
324(1): 2007/02/20(火)15:42 ID:??? AAS
>>317
PHPのような型無し言語はポリモーフィズムだらけです。
325: 2007/02/20(火)19:43 ID:??? AAS
>>324
型なしといわずに「動的型」といってあげて
326: 2007/02/20(火)21:40 ID:??? AAS
おk。次から挑戦してみる。
327(1): 2007/02/20(火)22:14 ID:??? AAS
それぞれの型クラス作ればいいんじゃね?
328: 2007/02/20(火)22:33 ID:??? AAS
と言いますと?
329: 2007/02/21(水)01:59 ID:??? AAS
>>327
それおもしろそうだな。
symfonyのsfMixer使ってやれば、
意外とそれなりにつかえるもんになりそう。
まぁ、ぐちゃぐちゃになりそうな気もしなくも無いけど…
330: 2007/02/21(水)02:19 ID:??? AAS
type hintingでstringとかintも使えるようにすりゃいいのにな
そんなに難しくもなさそうだし
331: 2007/02/21(水)02:53 ID:??? AAS
phpのtype hintingはでstringとかintも使えるようにって話は時々話題になるけど、もし導入するとしたら、
function hoge(string s) {・・・
っていう定義の関数をhoge(12);で呼び出した場合、エラーにすべき?例外投げるべき?暗黙的にキャストすべき?
332: 2007/02/21(水)05:54 ID:??? AAS
わざわざtype hintingに記述する=厳格な型を要求してる
と考えられるから
事前にstringにキャストされてたらok
int等ならfatal errorじゃない?
333: 2007/02/21(水)18:05 ID:??? AAS
オブジェクト指向よくわからんから
とりあえずpearのDB呼んでみる。
334(1): 2007/02/23(金)02:23 ID:??? AAS
>>322
stringとintの違いを意識しなくてもコードを書けるのが、ほとんど唯一のPHPの利点なのに・・・
上下前次1-新書関写板覧索設栞歴
あと 108 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.009s