【PHP】下らねぇ質問はここに書き込みやがれ 39

このエントリーをはてなブックマークに追加
788nobodyさん:2007/02/20(火) 18:48:46 ID:???
まあがんばれ。結果チェックなんて面倒くさいと思いがちだが
結果をチェックしないほうが事態が面倒くさくなることのほうが多いぞ
789虚弱PHP:2007/02/20(火) 18:51:45 ID:???
>>782
throwはgoto文より強力な制御構造だから。
使い方に注意しないと、
本当にやるべきことをやってるのか後で確認するのが辛くなる。
小規模だったら問題ないと思うけど。
790nobodyさん:2007/02/20(火) 18:53:49 ID:???
>>788
結果チェックより事前チェックだろw
できるだけ早い時期に障害を見つけるのが肝要だ。
fileの処理でいうなら、ファイルを開く前にファイルの存在チェックや
読み取り(書き取り)可能かをチェックすることだ。
791nobodyさん:2007/02/20(火) 19:07:11 ID:???
>>783
オブジェクト指向ってのは書き方の概念というか
抽象的な物だからこれが正解ってのはないけど
そんな感じに一つのオブジェクトでの役割を簡潔にして
同じような処理は関数化しておいたりして
組み立てていく感じでいいと思うよ。や、俺もよくわかってないが…
792nobodyさん:2007/02/20(火) 19:08:12 ID:???
>>781
本家本元のサイト見ても、曖昧な記述しか載ってないからねww
●●の場合はライセンス購入を「お勧めします」だもんw
「購入する必要があります」って断定じゃないからね。
793nobodyさん:2007/02/20(火) 19:21:17 ID:???
>>779
再頒布若しくはMySQLを含んだソフトウェア販売の場合はライセンスを取得しなくてはならない
ってことでしょ?
何が難解なの?
794nobodyさん:2007/02/20(火) 19:23:29 ID:???
>>793
単純なお前がウラヤマシス
795nobodyさん:2007/02/20(火) 19:24:33 ID:???
>>793
アフィ厨が言ってるようなバックエンドでMySQLが動いてる
商用Webアプリは「再頒布」でも「ソフトウェア販売」でもないよな?
これはどっちだ?無償とも有償とも読み取れないぞ
796nobodyさん:2007/02/20(火) 19:52:06 ID:???
もうOracleかDB2でいいよ
797nobodyさん:2007/02/20(火) 20:08:11 ID:???
そもそも>>737の、
>PHPとMYSQLの組み合わせがベストでしょうか?
という質問をなんでPHPのくだ質スレでするのか…?
798nobodyさん:2007/02/20(火) 20:54:53 ID:???
>>796
DB2は、とっくの昔にMSのSQLServerに吸収されちゃっているけど、何か?
799nobodyさん:2007/02/20(火) 20:55:07 ID:wdqQBZkR
ピザまん買ったら、ピザまんに『ピザ』って書かれてた
http://www.uploda.org/uporg700785.jpg
800nobodyさん:2007/02/20(火) 20:57:44 ID:???
>>798
まだあるだろ・・・常識的に考えて
801nobodyさん:2007/02/20(火) 21:18:41 ID:???
>>793
「頒布」という言葉を辞書で調べろ。
802nobodyさん:2007/02/20(火) 21:25:31 ID:???
>>801
順序が逆だろw
日本語訳じゃなくて、原文(英文)をよく読め。
803nobodyさん:2007/02/20(火) 21:31:34 ID:???
>>789
うーん、gotoはどんな処理をしているのかが非常にわかりにくくなる面があるけど、throwは処理を中断する方向にしかいかないし、そもそも「どこまで飛ぶか」を意識する必要もないんじゃないかな。
エラーとか入力チェックとか変数のnullチェックとかで、つじつまを合わせるのが難しいと感じたら、すぐthrowするくらいの勢いで問題ないと思うよ。
まあ確かに限度はあるだろうけど・・・。
804nobodyさん:2007/02/20(火) 21:43:11 ID:???
うん。throwはばしばしとばしまくりで問題ないと思う。
気をつけなければならないのはcatchの方。
要らないやつまで細かくcatchすると、どこで捕捉されているのかわからなくなる。
805nobodyさん:2007/02/20(火) 21:48:48 ID:???
>>803-804
throwってどうやって使えばいいの?
ifとかexitとかで代用できそうな気がしていまいちよく分からない
806nobodyさん:2007/02/20(火) 21:57:06 ID:???
俺も知りたいです。
or die使いまくりなもんで。。
807nobodyさん:2007/02/20(火) 22:03:52 ID:???
>>805
代用できなくはないけど、例外処理のほうがフレキシブル。
exitは一回呼び出したら全てが終了するけど、throwした例外はcatchさえすれば、回復して元の処理を継続することができる。

たくさんthrowしても、まとめて全部catchすることもできるし、catchブロックはエラー等の対処という明確な位置づけで考えることができるから、一度理解してしまえばすごくわかりやすいしね。
とにかく、エラー処理(=面倒くさい処理)を一箇所にまとめることで、コードがとても清潔で健康な状態に保たれる。
808nobodyさん:2007/02/20(火) 22:04:19 ID:???
>>802
> 原文(英文)をよく読め。

その必要は全くない。
公式な日本語訳が存在してるんだから。
809nobodyさん:2007/02/20(火) 22:35:07 ID:???
if (func1()==false) {
エラー処理
}
if (func2()==false) {
エラー処理
}
func3();

810809:2007/02/20(火) 22:36:21 ID:???
try {
func1();
func2();
func3();
}
catch {
エラー処理
}
811809:2007/02/20(火) 22:37:57 ID:???
いまいちな例かもしれんが、
プログラム組んでると正常処理が異常処理に埋もれてしまう。>>809
try,catch使うと、これらを分離しやすい。>>810
のもtry,catchの利点かもな
812nobodyさん:2007/02/20(火) 22:40:42 ID:???
いや、わかりやすかった
813809:2007/02/20(火) 22:41:18 ID:???
一方、どの関数からどんな例外が投げられるかが
>>810 ではわからん。というのはデメリットだな。
>>789 がgotoより強力といってるのはこれのことかと。
814nobodyさん:2007/02/20(火) 22:45:46 ID:???
>>813
そういうのはthrowする側が例外オブジェクトで通知してくることなんじゃないかな。
815nobodyさん:2007/02/20(火) 23:08:40 ID:WMH2bERy
$subject = "";

if(preg_match('/^([0-9a-zA-Z]*)$/', $subject))
    echo "マッチしました";
else
    echo "マッチしませんでした";

$subject は、空文字列 ( "" ) なのでこの正規表現では
マッチしないはずなのですが、「マッチしました」が出力されます?
なんででしょうか……。
816nobodyさん:2007/02/20(火) 23:13:46 ID:???
preg_match('/^([0-9a-zA-Z].*)$/', $subject)
817軟式PHP:2007/02/20(火) 23:14:04 ID:???
*だからね。
818nobodyさん:2007/02/20(火) 23:15:13 ID:???
>>815
*は0以上マッチすることを表す。
つまり、空文字にもマッチする。
恐らく君が望む場合*を+(一回以上のマッチ)に変更しなければならない。
819nobodyさん:2007/02/20(火) 23:19:40 ID:WMH2bERy
>>816, >>817, >>818
なるほど!よくわかりました。
ありがとうございました。
820816:2007/02/20(火) 23:20:18 ID:???
すまん、1文字以上は+だったわ
あれ?ドットってなんだっけ?1文字だけだったよな
821nobodyさん:2007/02/21(水) 01:28:57 ID:???
 
無   理   す   ん   な
 
822nobodyさん:2007/02/21(水) 01:45:20 ID:???
正規表現のレスをした後って、必ず一抹の不安が残るよねw
823nobodyさん:2007/02/21(水) 01:56:21 ID:???
一応テストしてから書くようにしているからさほど心配はしないけどなw
824nobodyさん:2007/02/21(水) 03:33:33 ID:???
フォームの値を取得する際にどこから来たのか調べたいので

$hoge = ほにゃらら
if($hoge != $_SERVER["SERVER_NAME"]) {
error();
}

とやりたいのですがほにゃららに当てはまる処理はどのように記述したら良いでしょうか?
825nobodyさん:2007/02/21(水) 03:40:57 ID:???
$_SERVER["HTTP_REFERER"]

まあ偽装できるけどね。
あと!=じゃなくてstrposとか部分一致で判断しないとダメ。
826nobodyさん:2007/02/21(水) 03:46:22 ID:???
$AcceptHost = "/example\.com/";

if( preg_match($AcceptHost, $SERVER['HTTP_REFERER']) ) {
 error();
}
827nobodyさん:2007/02/21(水) 03:47:19 ID:???
- if( preg_match($AcceptHost, $SERVER['HTTP_REFERER']) ) {
+ if( !preg_match($AcceptHost, $SERVER['HTTP_REFERER']) ) {
828nobodyさん:2007/02/21(水) 03:49:38 ID:???
>>824
判定させる意味が分かんないけど>>825の言っている様に
どこから来たのかというのがリファラーで
それを吐かない場合にエラーを吐くのであれば''かnullか!で
829nobodyさん:2007/02/21(水) 04:06:42 ID:???
strposだと
ドメインがabc.comでリファラーがabcd.comだとエラーになりませんよね?
830nobodyさん:2007/02/21(水) 04:09:42 ID:???
aabc.comとabc.comです
831nobodyさん:2007/02/21(水) 05:20:09 ID:???
"http://".$_SERVER["SERVER_NAME"]

にすればいいじゃん
832nobodyさん:2007/02/21(水) 05:22:40 ID:???
くそ、Janeのバグか。

"えいちてぃーてぃーぴー://".$_SERVER["SERVER_NAME"]

にすればいいじゃん。
833nobodyさん:2007/02/21(水) 05:42:48 ID:???
同じだろ
834nobodyさん:2007/02/21(水) 05:59:03 ID:???
いや、IEだと普通に見えるけどJaneだとリンクが化けてるんだよ
835nobodyさん:2007/02/21(水) 06:00:08 ID:SAIWRW73
<?php
include $_POST....
?>

↑で色々なHP表示させたんですが、サイトによっては
文字化けしたり、しなかったりします。 何故なんでしょうか?

yahooはOKで、googleは化けたりします・・・うーん
836nobodyさん:2007/02/21(水) 06:03:34 ID:???
837nobodyさん
>>832
それでwwwありとwwwなしのURLをどう区別する?