Webでオブジェクト指向プログラミング (442レス)
上下前次1-新
219: 2006/04/02(日)01:15 ID:??? AAS
>>213
俺も最初そのへん「これ必要か?」と思ったな
他の人(近未来の自分含む)に対しての「使われ方の説明」を
ソースの中に機能的として組み込むものだとわかって
得心した。
220(2): 2006/04/02(日)01:57 ID:??? AAS
PHP6のgotoは、gotoというキーワードが実装される訳ではなくて、
for () {
if () {
break foo;
}
print "bar\n";
foo:
print "baz\n";
}
こんな感じに書けるようになるもの。
221: 2006/04/02(日)02:36 ID:??? AAS
>>220
これならあってもいいかも。
222(1): 2006/04/02(日)07:04 ID:??? AAS
>>199,200
型安全性ならis_arrayとかis_stringとかinstanceofでチェックすればいいだけじゃないの?
223: 2006/04/02(日)07:17 ID:??? AAS
それはそうだが
何が求められているのかを知るために
中身まで見ないといけないのはあまりよろしくないだろう。
224: 2006/04/02(日)07:50 ID:??? AAS
つ @param @return
225(1): 2006/04/02(日)09:57 ID:??? AAS
動的型付け言語であるPHPで、型を指定したいってのがそもそも可笑しな話なんだよな。
それでもタイプヒンティングみたいにオブジェクトの型を動的にチェックしてくれるようにする構文はいいアイデアだと思った。
Javaでいう変数の静的な型指定(つーかC/C++からだけど)と構文を似せたってのも良い。
JavaScript2.0なんかもそういう方向に行ってるね。
>>199
> integer型やstring型などをメソッド引数に指定できないのが
たぶんだけど、統一性の問題があるからだと思う。
例えば引数にintを指定したメソッドがあったとして、呼び出すときにstringを渡したからってエラーにすべきではないでしょ。
その辺の仕様がうまくいかないんじゃないかな。
226: 2006/04/02(日)10:18 ID:??? AAS
>>220
普通にJavaのパクリじゃないか。
Java自体もCあたりからパクッタ者だが
227(3): 2006/04/02(日)10:24 ID:??? AAS
>>222
以前もどこかのスレで議論があったが。
それだけでは以下の問題を解決できない。
$number = 9;
$value = 1;
$x = $number + value *2;
$y = $x * $x + 4 * $number;
$number = 1000;
$z = $x / ($y + $number);
とした適当なコードがあったとき、
あとから
$x = $number + value *2;
の部分を
$x = $nunber + value *2;
と書きかえても $numberと$nunberとの違いの
に気づかない。
そして路頭に迷ったあげくにデバッグに無駄に時間をかけることになって
開発速度が衰える。
228(1): 2006/04/02(日)10:28 ID:??? AAS
>>225
Javaみたいにラッパークラスを作ってしまえばいいかもしれんな。
final class Integer extends Number {
$private $value;
__construct($value){
if($valueがint型であれば){
$this->value = $value;
} else {
throw new NumberFormatException("整数以外入力するんじゃねえぞこのバカ野郎氏ね!");
}
}
}
229: 2006/04/02(日)10:29 ID:??? AAS
privateに$が余分についていた。
あとは適度に必要な変換メソッドを追加しておくべし。
intValue()とか
230(1): 2006/04/02(日)10:46 ID:??? AAS
>>228
お、いい方法じゃん!って一瞬思ったけど、
function method(Integer $param)
を呼び出すときmethod(10)って書けないし><
>>227
えーっと、それは型安全性の問題なの・・・?
231: 2006/04/02(日)13:43 ID:??? AAS
>>227
コンポーネントに対する入力値と戻り値をちゃんとチェックするような
ユニットテストを書いとけばいいんじゃないの?
232(1): 2006/04/02(日)16:24 ID:??? AAS
>>227
それは単なるタイプミスだ。
233(1): 2006/04/03(月)11:03 ID:??? AAS
>>230
ひとこと「それだとAUTO-BOXINGが欲しくなるな」と言えばいいのにw
234(2): 2006/04/03(月)11:16 ID:??? AAS
>>233
つ 「それだとAUTO-BOXINGが欲しくなるな」
満足戴けたかな?
PHPみたいな型なし言語なら、Javaみたいなプリミティブ型とそのラッパークラスのオートボクシング/アンボクシングだけでなく、もう少し汎用的な自動型変換が欲しいところだな。
function method(int $x) {}
を
method("100");
っていうふうに呼び出したならintにキャストするくらいの自動化はあってもいいと思う。
(今あるPHPのタイプヒンティングだと、型が違うとエラーっていう設計だから)
もともとPHPは変数の実行時における型が文字列か整数かを意識しなくても適宜変換してくれるように設計された言語なわけだし。
235(1): 2006/04/03(月)14:51 ID:??? AAS
>>234
type hintingのメリットが台無しじゃね?
236(1): 2006/04/03(月)14:54 ID:??? AAS
>>234
それなら、
function method($x)
{
$x = (int) $x;
}
でいいんじゃないの?
237: 2006/04/03(月)15:34 ID:??? AAS
>>232
型宣言しておけばミスに即座に気が付く、
のだけれどあれだと気づかない。
238: 2006/04/03(月)15:35 ID:??? AAS
>>235
メリットって?
>>236
間違えて配列やオブジェクトを渡したときに自動的にエラーを出してくれるかもしれない。
もちろんis_intで確認してエラー出せば同じことだから絶対なければならないっていう必然性はないけど、あったら便利かとは思う。
あとタイプヒンティングでintやstringなどの基本型だけは指定できないっていう今の状況より統一感あるかと。
オートボクシングや構文糖と考え方は一緒ね。
239: 2006/04/03(月)23:39 ID:??? AAS
PHPでそんなことするくらいなら、素直にJava使うわ。
240: 2006/04/03(月)23:50 ID:??? AAS
引数に型書くだけの話やんけ
241(2): 2006/04/04(火)03:55 ID:B/b940FU(1) AAS
普通のclassと、
abstractなclass,
interfaceは、
クラス名から変えた方がいいんかな?
どうやってる?
242(2): 2006/04/04(火)15:51 ID:??? AAS
>>241
俺はabstractもinterfaceも普通の名前にしてる。
abstractやinterfaceをある特定クラスの仕様だけ抽象したことを表現したい場合に限り「Abstract〜」とか「〜Interface」にするかも。
例外だったら「〜Exception」てつけるけど。
243(1): 2006/04/04(火)23:58 ID:??? AAS
>>241-242
というか、C#やC++みたいに継承も実装もおなじ::をつかっているわけではなく
PHPはjavaのようにちゃんと継承はextends、インターフェース実装はimplements
を使うように指定されているから
名前を見ただけでインターフェースかクラスかわかるようにまでしなくてもええと思う。
IDE使えば名前指定しなくてもさらに一目でわかるし。PHPのIDEはよくわかんないけど
244: 2006/04/06(木)03:29 ID:??? AAS
>>242-243
レスさんくす
あんまり考えすぎなくてもいっか
245(1): [.] 2006/04/14(金)07:15 ID:??? AAS
質問です。
ビジネスロジックとドメインロジックとアプリケーションロジックは、プレゼンテーションロジックと対比的な位置づけですが、基本的に同じものですか?
246: 2006/04/14(金)10:33 ID:??? AAS
>>245
使用する分析・設計手法によって、使われる用語とその定義は違ってきます。
こういうインフォーマルな場では、それぞれが別の立場・定義で勝手に用語を使う
ことが多く、基本的な認識がすれ違ったまま不毛なレスが飛び交うのが常です。
まずは専門書で系統立った知識を得てから、自分なりの経験と知見を積んでいけば
その類のどーでもいい疑問は解決すると思われます。
247(3): 2006/04/22(土)05:13 ID:cnsSSisF(1) AAS
プロパティをtrue/falseにするメソッド名ってそれぞれどんな命名にする?
248(1): 2006/04/23(日)05:49 ID:??? AAS
>>247
setTrue、setFalse
setOn、setOff
上下前次1-新書関写板覧索設栞歴
あと 194 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.009s