TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
☆三 【 スクリプト改造工房 PART 9 】 ★三
50万件全文検索に絶えられるカートありますか?
CGI暴走はどういう時に起きるのですか?
ソーシャルネットワーキングのシステムを作ろう!
コンテンツとデザインの分離
*99の指定したCGIを*00が作るスレ
Webプログラマーになるためには
(´-`).。oO(なんでだろ?)
PHP+MySQL掲示板作ろうぜ
正規表現道場 Part2

Webでオブジェクト指向プログラミング


1 :2005/12/02 〜 最終レス :2018/02/20
サーバーサイドWebプログラミングのOOスレです。

・OOP、MVC、デザパタなどのコンセプト的な話題
・OOにまつわる言語比較(言語批判はその言語で開発してる人に失礼にあたることが多いのでなるべく禁止でお願いします)
・保守、再利用、生産性、開発環境などの実践的な話題
・Webサーバ、DBなどの外部との親和性に関する問題
・学習、教育などの方法論

などなど。

前スレ
PHPでオブジェクト指向プログラミング
http://pc8.2ch.sc/test/read.cgi/php/1113724557/


2 :
乙カレーション。
ついでにズザー

3 :
見かけた関連スレ(内容未確認)

PHPとJAVAさぶれっと
http://pc8.2ch.sc/test/read.cgi/php/987850713/

オブジェクト指向perl
http://pc8.2ch.sc/test/read.cgi/php/1022604696/

ウェブプログラミングで使えるデザインパターン
http://pc8.2ch.sc/test/read.cgi/php/1069451782/

【PHP】フレームワークについて語るスレ【総合】
http://pc8.2ch.sc/test/read.cgi/php/1123608068/

CGI VS PHP VS JAVA
http://pc8.2ch.sc/test/read.cgi/php/1006006800/

Python vs Ruby vs PHP vs Perl
http://pc8.2ch.sc/test/read.cgi/php/1124710112/

WEBアプリにもっとも適した言語は何か?
http://pc8.2ch.sc/test/read.cgi/php/1130115690/


良質なサイトや書籍など、情報ある人プリーズ

4 :
>>3
ゴミ情報邪魔

5 :
>>4
うるさいわね

6 :
MVC はともかく、デザパタとか入るとメタ議論好きが入ってきそうだなぁ。
適宜ム板、マ板に誘導していかないと。

7 :
そうだね。
とりあえず議論がWebプログラミングに関係なくなった時点でスレ違いってことで。

8 :
前スレのスレタイと比較すると、ぱっとみJAVA関連のスレと
思ってしまう俺は古い人間なのか?

9 :
ここはSmallTalkスレですよ?

10 :
webページレベルではオブジェクト思考でなくてもまぁ、苦労はしないけど、webシステムになると、データやモジュールをクラス管理しないとやってられない。この板でスレ違いって言う人間こそスレ違い。


11 :
素人趣味プログラマですが、
綺麗にOOが書けません><
プロの方のソースを拝見させてもらうと感動します><

12 :
>>10
それは別に Web に限らないからスレ違いなのでは?
むしろ webprog でやらない方が有意義になると思われ

>>11
ごめん、それはどれのこと?
公開されてるやつで、プロが書いたかどうか分かるものってあるの?


13 :
>>11
Apahce JakartaプロジェクトやStrutsプロジェクトなど、
オープンソースソフトウェアのソースコードは公開されているから参考にしてみれば?

14 :
>>1乙。

このスレ、荒れるだろうねえ。

15 :
>>14
俺様が荒れないように見張っているので大丈夫だ。安心してくれ。

16 :
>>14
議論で荒れるならいいけどね。
アホとかバカとか低脳な荒れ方はしないといいんだけど。

17 :
JavaScriptでOOって無理があるだろ
派生クラスだとprivateプロパティとして使いたい部分が共有されてしまう。
全部publicならできるのか?

18 :
<?php
class State{
var $user;
var $pass;
var $host;
var $database;

function State($user,$pass,$host,$database){
$this->user = $user;
$this->pass = $pass;
$this->host = $host;
$this->database = $database;
}

function GetCon(){
$con = mysql_connect($this->host,$this->user,$this->pass);
if($con && mysql_select_db($this->database,$con))
return $con;
else
return NULL;
}
}

19 :

class TEST{
var $con;
var $sql;
var $data;

function TEST($user,$pass,$host,$database){
$d = new State($user,$pass,$host,$database);
$this->con = $d->GetCon();
}

function MakeSQL(){
$this->sql = "SELECT user,host FROM user ";
}

function RunSQL(){
$rst = mysql_query($this->sql,$this->con);
if($rst)
for($i=0; $col=mysql_fetch_array($rst) ; $i++)
$this->data[$i] = $col;
else
return NULL;
return 1;
}
}


20 :
class MAIN{
function MAIN($user,$pass,$host,$database){
$obj = new TEST($user,$pass,$host,$database);
if($obj->con){
$obj->MakeSQL();
$obj->RunSQL();
$this->ShowData($obj);
}
else
printf("error");
}

function ShowData($obj){
for($i=0;$i<sizeof($obj->data);$i++)
printf("%s,%s<BR>",$obj->data[$i]["user"],$obj->data[$i]["host"]);
}
}
?>

21 :
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
</HEAD>
<BODY>
<?php
$d = new MAIN(MySQLユーザー名,MySQLパスワード,"localhost","mysql");
?>
</BODY>
</HTML>

>11
PHPでやるとこんな感じ?
ひねりやセキュリティーは無視したけど
概念だけならこんな感じで十分だと思う

ま、アクセス権の関係で動かないかもね

22 :
static $con;
if ( $con === null ) {

とか、やりたくならんか?

23 :
>>17
なぜJavaScript?

>>22
それだとインスタンスごとにコネクションを保持っていうスタンスから外れるね。

24 :
どっちかっていうと

static $instance = false;
if ($instance === false) {
$inctance = new . . .

じゃないのphp4ならだけど

25 :
>>24
それってもしかしてシングルトンの話じゃ・・・?

26 :
VOがDB持ってるのって概念的に変じゃね?

27 :
>>17
普通にプロトタイプOOできるよ
アクセス制限したければprototype.js使うとか

28 :
JSって名前の隠蔽が関数かブロックのローカルスコープでしかできないからOO的な隠蔽は無理だよね。
あの言語は興味としては面白いけど、OOを生かした開発向けじゃないと思うけど。
つーかサーバーサイドでJSやってる奴いるの?

29 :
シラネ。
隠蔽やポリモーフィズムは他言語と変わらん。

30 :
出た!ポリモーフィズム!

31 :
>>30
じゃあ何て言うんだよこの馬鹿が。

32 :
>>30-31
他所へ行って構わなくてよ。

33 :
このスレ、ネタがないね。
とりあえず思ったことを書いてみるテスト。

MVCのM(MVCフレームワークに寄りかからない場合でもビジネスロジックをつっこむ部分)の設計について。
Webの場合は細かいエンティティをModelにしてしまうとかえって見通しが悪くなるから、割と大雑把なくくりでModelにした方が設計しやすい+実装しやすい+パフォーマンス的にも良いんだよね。
でもそうすると、関数でもいいものがメソッドになっただけで、ベタ書きロジックのラッパに過ぎないような実質シングルトンがいくつもできたりして。
それってオブジェクト指向という考えから反対方向に行ってしまってる。
形だけがオブジェクト指向風になってるって感じ。
もうちょっと勉強してくるわ。

34 :
もうちょっと具体的に頼む

35 :
単に設計がいまいちなだけじゃね?
ちゃんと考えて組めば、Mだけ客によって取り替えてウマーに出来ると思う。
まあ外向けとかで見栄えも気にするならMに加えてVも弄るから、分けずにMV+Cでもいいじゃんって発想?

36 :
PHP5でオブジェクト指向プログラミングって、
仕事ではまだほとんどやってない?

37 :
PHP 5 がまだなのかオブジェクト指向がまだなのか
どっちを聞きたいんだろ


38 :
PHP5からオブジェクト指向とったら何も残らないじゃん。

39 :
PHP5の仕様を学びながら同時にオブジェクト指向も学べるっていう
素敵本ってないですかねぇ?

40 :
>>39
OOやるならJavaのがいいと思う。
実際のところPHPだけでOO理解できた奴いるの?

41 :
まぁいいサンプルがあればいいんじゃないの?
おれは知らないけど

42 :
PHP5で__CLASS__ってやるとクラス名を取得できるけど、staticメソッド内で

abstract class Hoge { static public function method() { echo "Fuga"; } }
class Fuga extends Hoge {}
Fuga::method();

これで"Fuga"って表示させる、みたいな。

43 :
ごめん、日本語が中途半端だった。

× これで"Fuga"って表示させる、みたいな。
○ これで"Fuga"って表示させるにはどうしたらいいですか?

44 :
お前が質問したいのはそういうことじゃないだろ

45 :
あ、飽くまでecho "Fuga"っていうのを使わずに__CLASS__とかgetなんちゃらname()とかそういう類で"Fuga"を取得したいという意味です。
get_class($this)のstatic版みたいなのはないですかね?

46 :
ムリ
俺もこの仕様はなんとかならんものかと思ってる

但しその例だと

Fuga::method() →Fugaにない→親クラスのメソッドが呼ばれる

オーバーライドされていないため実際にはHuga::method()がコール
されるわけで親クラスの名前(Hoge)が表示されるのは正しい動作だと思う

47 :
Hugaって何だHogeだよHoge

48 :
staticはクラスメソッド的なニュアンスだしな
下で隠蔽しなきゃそのまま晒される

49 :
みなさんどうもです。
無理ですかねぇ。ちょっと頑張ってみたけどやっぱ無理でした。

abstract class Hoge {
static public function method() { echo self::getMyName(); }
abstract static protected function getMyName();
}

class Fuga extends Hoge {
static protected function getMyName() { return __CLASS__; }
}

Fuga::method();

staticメソッドってオーバーライドできないんですね・・・。

50 :
self::でサブクラスのメソッドが呼ばれるわけなかろ。

51 :
OO的には、staticメソッドは各クラスに固有のものだから
オーバーライドという概念自体が存在しない

52 :
>>38
オレ自身は半信半疑だけどスピード上がってるんでしょ?

53 :
>>50 >>51
納得。そうなんですか。継承はされるのに・・・、と考えるとむつかしいですね。
まあとりあえずできました!!

abstract class Hoge {
static public function method() {
$bt = debug_backtrace();
for ($i = 1; $i < count($bt); $i ++)
if (empty($bt[$i]["type"]) or $bt[$i]["type"] != "::" or $bt[$i]["function"] != __FUNCTION__)
break;
echo $bt[$i - 1]["class"];
}
}

class Fuga extends Hoge {
static public function method() {
parent::method();
}
}

Fuga::method();

超微妙・・・。デバッグでもなんでもないのにdebug_backtraceとか超微妙。

54 :
>>42
なんで、そういうことをしたいか?って書けば
別解がでるんじゃね?

55 :
>>54
返事が遅れて申し訳ない。・・・といってもその間にレス来てないけどw
実際にはデバッグの目的でログを取るのに、staticメソッド内で呼び出したサブクラス名を__CLASS__みたいに手軽に取得できないかを探し始めたのがきっかけでした。
その意味ではdebug_backtraceを発見したのでそれで問題解決なんだけど、元の質問をしたときには確か似たような問題を見た記憶があって、もうちょっと一般的な問題のように扱えるかも・・・とでしゃばってみた限りですorz
まあ時間的に少し余裕があったし、今後似たような状況(例えば可変クラスとか)も起こらないとは言えないってこともあって、色々考案してみました。

以下は一般的にはこうするのが(ベストとは言えないまでも)一番マシじゃないかなぁ〜という、ちょっとした提案
abstract class Hoge { static public function method($name = __CLASS__) { echo $name; } }
class Fuga extends Hoge { static public function method($name = __CLASS__) { parent::method($name); } }
Hoge::method();
Fuga::method();
サブクラスにメソッドの実装を強制できない点が痛いけど>>53よりマシかなって程度で。
まだマニュアルを引きつつ勉強中な身なんで、つっこみとかあったらよろしくです。

56 :
強制したきゃしろよ

57 :
Movable Typeの11行目の、
use MT::Bootstrap App => 'MT::App::CMS';
って、どういう意味ですか?
分かるエロくない人、どうかお教えください。

58 :
すみません、MT 3.2(日本語版)のmt.cgiの話です。
あと、勝手にMovable Typeがオブジェクト指向と判断してます。

59 :
>>57
エロいので教えない

60 :
Javaライクな(クラスの)パッケージ管理はPHPではでけへんの?
__autoload() を使おうとするとどうしても一つのフォルダに
クラス定義ファイルを全部ぶち込むことになるんだけど

61 :
いけたっ
うんこぷー

62 :
>>60
__autoloadの中を頑張ってつくればある意味Javaのパッケージより柔軟に色々できると思う。
今即興で考えてみたけどこんなのどう?

function __autoload($class, $newdir = "") {
 static $dirs = array();
 if ($newdir) $dirs[] = $newdir;
 if ($class) foreach ($dirs as $dir) {
  $file = "$dir/$class.class.php";
  if (file_exists($file)) { require_once $file; return; }
 }
}

function add_import_dir($dir) {
 __autoload("", $dir);
}

なんか書いてて虚しくなってきたよ・・・

63 :
自クラス内のプロパティーにも
セッターゲッター介してアクセスする?
あるいは自分の中のことだから
直アクセスする?
Dotch?

64 :
>>63
自分のクラス内なんだから直アクセスでしょ。
クラス内でもセッタゲッタしたいってことは、そのプロパティによっぽど整合性が必要なんだろうから、場合によっては必要な部分だけabstractなクラスとして抽出して問題のプロパティをprivateにする。
ってそれWebプログラミングとどういう関係があるの?

65 :
宗教論争させたいだけでしょ

66 :
なんか仕込みがあるならともかく
別段論争になるようなことじゃないと思うけど

67 :
>>>64
やっぱりそっか。
さんくすこ。
>>65
そんなわけナス

68 :
大域変数にするか問題と同じだな。

69 :
>>62
手間をかけさせて悪かった
やってみる

70 :
Ruby on Railsとかいうのがお目見えしたことだし
スクリプト系はMVC的に糞ってなことにはもうならないな

71 :
パッシブは別に糞じゃないだろ

72 :
>>70
RoRはぶっちゃけあんまり流行る気しないんだが。
あれってMVC?

73 :
PHPじゃそうかもな。rubyやperlはもうコレで決まりだと思う。

74 :
いやRuby自体がWebプログラミング方面でそれほど伸びないと思う。
Rubyの方がPHPより先に世の中に知れ渡ってたらRubyの圧勝だったかもしれないが、今更PHPと比較して生産性高いとも思えないし(飽くまでWeb方面では)。

75 :
そこで、pythonですよ!


76 :
Π損はメタクラス以外見るべきところが無い希ガス

77 :
rubyは構文が特殊すぎるし、まんまオブジェクト指向だから、phpのような流行り方をすることはそもそもありえなかったと思う。
unixハッカーな人たちにはperlやrubyが今後も支持されていくでしょう。phpは違う層の人たち向け。

78 :
ちょwww
unixハッカーってなんだwww
そりゃC使いry

79 :
cは別物。phpはもっと別物だけど。

80 :
WebでOOするときってどんなクラスつくるの?
MVC以外で。

81 :
オブジェクト指向言語は、OOがphp使うような素人の馬鹿避けになってる所は有るね。
phpの生産性って、素人を安い人件費で大量に使えるってだけだからねえ。
RoRは馬鹿には理解出来ないから、流行る事は無いだろう。流行るためには馬鹿でも理解出来る事が必要だし。

82 :
RoRのレベルが高いと思ってるおばかさんが一人いるぞw
Lisp信者にもその考えの奴多いんだよなぁ。

83 :
ざっくり言ってphpユーザはレベルが低い

84 :
ユーザのレベルなんて人それぞれだし、スレ違いでは?

85 :
phpしか書けない香具師に、LispやRoRは無理。

86 :
この言いっぱなしの駄レス連発してるやつって一人でやってんの?

87 :
はいはいわろすわろす
って言ってほしいんだろきっと。
LispはまだしもRoRを難しいとか言う奴初めて見た。
PHPしかできない奴のレベルが低いってのはまあ当たり前の話だが。

88 :
>>57-58
すみません、エロくても大丈夫になりましたのでどなたか教えてください。。。

分かった事
MT/Bootstrap.pmが関係?

89 :
あ、これはただ単にハッシュを渡しているだけなのですか?^^;

90 :
スレ違いだって

91 :
>>90
まあアレだ、Ruby厨には聞いていないから帰れということらしい。

>>57-58
Bootstrap.pmでimport関数に%param{App}を渡していると思うのだがその辺調べてみてくれ。

92 :
ここで解説はイラネ。

配布スクリプトの読めない部分を解説しちゃる
ttp://pc8.2ch.sc/test/read.cgi/php/1094842959/l50

93 :
>>85
なんというか、馬鹿丸出しな発言だな。
そもそもRoRが使えれば、Ruby使えるわけだから、
PHPしか使えないなんてことは成り立たないわけで。
逆にRoRしか使えないやつはPHP使えないしな。

94 :
でもPHP使いよりRuby使いの方が仕事出来るのが事実。

95 :
>>94
まじ?
俺、今、Rubyを勉強しているんだけど、プロになれる?

96 :
>>94
はじめからそう言えばいいのに、頭が悪いから>>85みたいな言い方になってしまったんだね。

97 :
「○○使い」なんて言語限定してる時点でそいつは使えない

98 :
RubyでWeb開発とか趣味以外でやってる人いるの?

99 :
>>98
とりあえず、仕事で使われてるのをみたことがないな
あと、Ruby関連は書籍がちゃんとしたのが少なくない?

ってかすれ違いなんで、こういうのはマ板で

100 :
誰も100をとってくれない件について


100〜のスレッドの続きを読む
30代が趣味でこれから覚えるならどっち?Perlかphp
RSS/RDF
ファイルメーカーでどこまでできるウェブアプリ!
Drupal node 9
PHPで2chを真似てこんなモン作ってみますた。
オッフェ(=゚ω゚)ノ♪で1000目指すスレ in WebProg
【PHP】フレームワークPharonスレ
こんにちは、PHPプロの方。教えてください。
XML+XSLTの切り札Cocoonについて語ろう!
50万件全文検索に絶えられるカートありますか?
--------------------
Twitter インスタ 痛い自転車乗り 2
【真頭】リアルヘッド ぬぬん!☆十三頭目【ソフビ】
【環境保護】リサイクルしてあげます【エコロジー】
【みんなで】中国愚将百選【決めよう】
神様・仏様がいま思ってそうなこと
【安価】あなた「王様ゲーム……?」 2
BTRON仕様2chOS
【商売69】サンリオで同人【サンリオ男子】
2018年度入社(((( ;゚Д゚)))ガクガクブルブル
C#,C#の宿題片付けます。
関ジャニ∞について語るスレ★345★
☆:.,;*。マイナビベガルタ仙台レディース。.:*:゜☆Part82
須田慎一郎「望月衣塑子は嫌がらせを言うのが目的。ジャーナリストのレベルに達してない」 ネット「噂や週刊誌ソースで質問するのが望月
レトロゲー板で一行リレー小説
【プロ野球】日テレが和牛などのプレゼント企画を実施した2019年8度目の巨人戦ナイター(vs広島、19時)の視聴率は5.1% 年間加重平均は7.5%
池上遼一を語るンだよ 4つ
この板ってドブ川並に汚いっすよね
さくらタンを馬並み浣腸でお仕置きX
昭和47年4月2日〜昭和48年4月1日生まれ part38
いやいややっぱり早苗さんでしょう2
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼