Webでオブジェクト指向プログラミング (442レス)
Webでオブジェクト指向プログラミング http://medaka.5ch.net/test/read.cgi/php/1133489897/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
51: nobodyさん [sage] 2005/12/12(月) 10:06:47 ID:??? OO的には、staticメソッドは各クラスに固有のものだから オーバーライドという概念自体が存在しない http://medaka.5ch.net/test/read.cgi/php/1133489897/51
52: nobodyさん [sage] 2005/12/12(月) 10:10:07 ID:??? >>38 オレ自身は半信半疑だけどスピード上がってるんでしょ? http://medaka.5ch.net/test/read.cgi/php/1133489897/52
53: 42 [sage] 2005/12/12(月) 10:55:39 ID:??? >>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とか超微妙。 http://medaka.5ch.net/test/read.cgi/php/1133489897/53
54: nobodyさん [sage] 2005/12/12(月) 12:32:07 ID:??? >>42 なんで、そういうことをしたいか?って書けば 別解がでるんじゃね? http://medaka.5ch.net/test/read.cgi/php/1133489897/54
55: 42 [sage] 2005/12/13(火) 13:04:20 ID:??? >>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よりマシかなって程度で。 まだマニュアルを引きつつ勉強中な身なんで、つっこみとかあったらよろしくです。 http://medaka.5ch.net/test/read.cgi/php/1133489897/55
56: nobodyさん [sage] 2005/12/13(火) 23:32:56 ID:??? 強制したきゃしろよ http://medaka.5ch.net/test/read.cgi/php/1133489897/56
57: nobodyさん [] 2005/12/16(金) 17:53:18 ID:CZKjM08D Movable Typeの11行目の、 use MT::Bootstrap App => 'MT::App::CMS'; って、どういう意味ですか? 分かるエロくない人、どうかお教えください。 http://medaka.5ch.net/test/read.cgi/php/1133489897/57
58: nobodyさん [] 2005/12/16(金) 17:54:24 ID:CZKjM08D すみません、MT 3.2(日本語版)のmt.cgiの話です。 あと、勝手にMovable Typeがオブジェクト指向と判断してます。 http://medaka.5ch.net/test/read.cgi/php/1133489897/58
59: nobodyさん [sage] 2005/12/17(土) 03:49:48 ID:??? >>57 エロいので教えない http://medaka.5ch.net/test/read.cgi/php/1133489897/59
60: nobodyさん [sage] 2005/12/21(水) 21:11:28 ID:??? Javaライクな(クラスの)パッケージ管理はPHPではでけへんの? __autoload() を使おうとするとどうしても一つのフォルダに クラス定義ファイルを全部ぶち込むことになるんだけど http://medaka.5ch.net/test/read.cgi/php/1133489897/60
61: nobodyさん [sage] 2005/12/21(水) 22:45:40 ID:??? いけたっ うんこぷー http://medaka.5ch.net/test/read.cgi/php/1133489897/61
62: nobodyさん [sage] 2005/12/22(木) 05:39:54 ID:??? >>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); } なんか書いてて虚しくなってきたよ・・・ http://medaka.5ch.net/test/read.cgi/php/1133489897/62
63: nobodyさん [] 2005/12/22(木) 15:26:55 ID:ORKD8JMR 自クラス内のプロパティーにも セッターゲッター介してアクセスする? あるいは自分の中のことだから 直アクセスする? Dotch? http://medaka.5ch.net/test/read.cgi/php/1133489897/63
64: nobodyさん [sage] 2005/12/22(木) 16:04:35 ID:??? >>63 自分のクラス内なんだから直アクセスでしょ。 クラス内でもセッタゲッタしたいってことは、そのプロパティによっぽど整合性が必要なんだろうから、場合によっては必要な部分だけabstractなクラスとして抽出して問題のプロパティをprivateにする。 ってそれWebプログラミングとどういう関係があるの? http://medaka.5ch.net/test/read.cgi/php/1133489897/64
65: nobodyさん [sage] 2005/12/22(木) 16:56:29 ID:??? 宗教論争させたいだけでしょ http://medaka.5ch.net/test/read.cgi/php/1133489897/65
66: nobodyさん [sage] 2005/12/22(木) 17:02:57 ID:??? なんか仕込みがあるならともかく 別段論争になるようなことじゃないと思うけど http://medaka.5ch.net/test/read.cgi/php/1133489897/66
67: nobodyさん [sage] 2005/12/22(木) 17:04:20 ID:??? >>>64 やっぱりそっか。 さんくすこ。 >>65 そんなわけナス http://medaka.5ch.net/test/read.cgi/php/1133489897/67
68: nobodyさん [sage] 2005/12/22(木) 18:58:37 ID:??? 大域変数にするか問題と同じだな。 http://medaka.5ch.net/test/read.cgi/php/1133489897/68
69: nobodyさん [sage] 2005/12/22(木) 19:19:44 ID:??? >>62 手間をかけさせて悪かった やってみる http://medaka.5ch.net/test/read.cgi/php/1133489897/69
70: nobodyさん [sage] 2005/12/22(木) 22:31:30 ID:??? Ruby on Railsとかいうのがお目見えしたことだし スクリプト系はMVC的に糞ってなことにはもうならないな http://medaka.5ch.net/test/read.cgi/php/1133489897/70
71: nobodyさん [sage] 2005/12/22(木) 23:00:25 ID:??? パッシブは別に糞じゃないだろ http://medaka.5ch.net/test/read.cgi/php/1133489897/71
72: nobodyさん [sage] 2005/12/23(金) 03:31:20 ID:??? >>70 RoRはぶっちゃけあんまり流行る気しないんだが。 あれってMVC? http://medaka.5ch.net/test/read.cgi/php/1133489897/72
73: nobodyさん [sage] 2005/12/23(金) 04:52:29 ID:??? PHPじゃそうかもな。rubyやperlはもうコレで決まりだと思う。 http://medaka.5ch.net/test/read.cgi/php/1133489897/73
74: nobodyさん [sage] 2005/12/23(金) 05:24:31 ID:??? いやRuby自体がWebプログラミング方面でそれほど伸びないと思う。 Rubyの方がPHPより先に世の中に知れ渡ってたらRubyの圧勝だったかもしれないが、今更PHPと比較して生産性高いとも思えないし(飽くまでWeb方面では)。 http://medaka.5ch.net/test/read.cgi/php/1133489897/74
75: nobodyさん [sage] 2005/12/23(金) 06:47:01 ID:??? そこで、pythonですよ! http://medaka.5ch.net/test/read.cgi/php/1133489897/75
76: nobodyさん [sage] 2005/12/23(金) 10:17:08 ID:??? Π損はメタクラス以外見るべきところが無い希ガス http://medaka.5ch.net/test/read.cgi/php/1133489897/76
77: nobodyさん [sage] 2005/12/23(金) 12:51:21 ID:??? rubyは構文が特殊すぎるし、まんまオブジェクト指向だから、phpのような流行り方をすることはそもそもありえなかったと思う。 unixハッカーな人たちにはperlやrubyが今後も支持されていくでしょう。phpは違う層の人たち向け。 http://medaka.5ch.net/test/read.cgi/php/1133489897/77
78: nobodyさん [sage] 2005/12/23(金) 13:53:17 ID:??? ちょwww unixハッカーってなんだwww そりゃC使いry http://medaka.5ch.net/test/read.cgi/php/1133489897/78
79: nobodyさん [sage] 2005/12/23(金) 14:07:50 ID:??? cは別物。phpはもっと別物だけど。 http://medaka.5ch.net/test/read.cgi/php/1133489897/79
80: nobodyさん [sage] 2005/12/23(金) 14:15:32 ID:??? WebでOOするときってどんなクラスつくるの? MVC以外で。 http://medaka.5ch.net/test/read.cgi/php/1133489897/80
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 362 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s