トップページ⇒php
1001コメント315KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2005/12/18(日) 10:10:12ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
過去スレは>>2
0952nobodyさん2006/01/14(土) 12:46:22ID:???
とある事情でbody[1]の中にHTMLソースが入ってるんですがこれの中身をまた一行ずつ配列に格納するにはどうすればいいにでしょうか?
0953nobodyさん2006/01/14(土) 13:00:35ID:???
改行されてるとこで分割すればいいじゃない。
0954nobodyさん2006/01/14(土) 13:15:18ID:???
>>952
explode()
0955nobodyさん2006/01/14(土) 13:45:50ID:???
>>953-954
解決できました。
どうもありがとうございます。
0956nobodyさん2006/01/14(土) 15:29:15ID:???
関数がない、という Fatal と、
array じゃないのを foreach して出る Warning を
検出するにはどうしたらいいでしょう?
0957nobodyさん2006/01/14(土) 15:30:09ID:???
>>950
できない。パターンごとのextendsするクラスを作れば
0958nobodyさん2006/01/14(土) 15:36:54ID:???
クラス定義のPHPコードを動的生成してevalするとかw
0959nobodyさん2006/01/14(土) 15:43:29ID:/np9stAG
日付の質問です。
DBに入っている日付型データがn分経過しているかどうかを判定したかったんですが、
日付関数でn分経過した日付型を返すようなものが見あたりませんでした。
よい方法ないでしょうか?
0960nobodyさん2006/01/14(土) 15:49:01ID:???
n分経過、でなく、n分前の日付データを生成して、それと大小比較すればいいんじゃないの?
0961nobodyさん2006/01/14(土) 15:49:38ID:???
生成するのは「現在時刻のn分前の日付データ」ね。
0962nobodyさん2006/01/14(土) 15:52:43ID:???
>>956
起きたエラーの検出じゃなくて
function_exists と is_array でチェックするって方法は?
0963nobodyさん2006/01/14(土) 15:56:49ID:???
>>962
全部の関数呼び出しで書き間違いをチェックしてられないから
文法チェックみたいな形で一気に検出したい、ってことじゃないの?
理屈からいくと動的な関数呼び出しも可能なPHPで完璧なチェックってのは不可能なんだけど。

配列の方はis_arrayでチェックするのは割と基本だよね。
ま、直前で配列初期化してるようなものまで書き間違いによるミスが無いか
チェックしようとしてるんじゃないかと思ったりするけど。
書き間違いの可能性まで考えたらis_arrayに渡してる引数からして疑われるわけだし。
0964nobodyさん2006/01/14(土) 16:02:56ID:???
>>962
どうしてもチェック抜けがあるので
それを検知したいんです。
09659592006/01/14(土) 16:06:43ID:???
>>960 ありが�d〜
0966nobodyさん2006/01/14(土) 16:13:33ID:???
>>964
エラーハンドラ定義して自分でやるって手もあるけど、
たぶん普通に地味にチェックしていく方が楽だと思うよ
0967nobodyさん2006/01/14(土) 16:14:01ID:???
>>964
基本的には全ての条件パターンでのロジックを通して実行してみるってのは
プログラムテストの基本であり、それもできないやつはプログラマ失格なんだけどな。
(で、システム全体で全条件を通すのは非常に難しいので、関数単位で単体テストとかするわけだけど)
0968nobodyさん2006/01/14(土) 16:26:28ID:???
正規表現で全ての文字(改行を含む)をあらわしたいのですが、
[.\n]って間違ってる?これを使うとなぜかうまくいかないです
09699642006/01/14(土) 16:29:19ID:???
>>966-967
おっしゃることもっともです。
とはいえ、全チェックや二重チェック、地道にテストをしても
人間がやることなんで抜けがあるのでシステム側で検知したいんです。
0970nobodyさん2006/01/14(土) 16:32:28ID:???
配列初期化ミスとかは実行時の致命的エラーなんだから
事前にチェックする方法ってのは原理的に存在しないよ。
それって結局、ロジックによって通過先が変われば状態が変わってしまうもの。
諦めたら?
0971nobodyさん2006/01/14(土) 16:41:20ID:???
>>968
間違ってる。[〜] の中での「.」はただの「.」という文字であって全ての文字は表さない。
「.|\n|\r」じゃないの?
0972nobodyさん2006/01/14(土) 16:43:32ID:???
>>969
いやー
だからね、その方が難しいんだって
エラーハンドラの定義でも例外処理でもいいけど、その分
作り込む量は多くなるし、エラーの処理も全部チェックしなきゃ
いけないわけ。検知ったってさ、検知だけできてもしゃーないわけ
でしょ。何をしたいのか知らないけど、要求レベルがかなり
高いと思うよ
09739682006/01/14(土) 16:45:43ID:???
うわー言われてみればそうだわ、
めちゃくちゃはまってたんでマジ助かりました、ありがとう
09749692006/01/14(土) 16:49:39ID:???
>>970,972
ですね。例外を用意せずに
set_error_handler() のように Fatal や Warning, Notice をキャッチして
その場所をメールで報告、とかできれば楽だと思ったのです。
ありがとうございました。
0975nobodyさん2006/01/14(土) 16:53:29ID:???
>>969
その目的って事前チェック?それとも致命的エラーを出してもユーザに見えなければOK?
後者だったらset_error_handler()でとりあえずお待ちください画面でも出してお茶濁しとけば。
09769502006/01/14(土) 16:54:40ID:aUotD7Tf
できないですか・・・

DBのデータを操作するDAOクラス(基本DAOクラス)があるんですが、
それのextends元クラス(DBクラス)を変更することで、
対応DB(MySQLなど)を選択することができるんです。

で、普段はこの基本DAOクラスをさらに継承した
個別アプリ用のクラス(拡張DAOクラス)を作成して、利用する形です。

基本DAOクラスはどのDBでも同じ内容(メソッド)なので、
拡張DAOクラスからDBを指定して、基本DAOクラスのextends元DBクラスを
選択できればと思った次第です。

今はextends元だけが異なる基本DAOクラスを複数用意していますが、
これは重複していて無駄だし、ソース改良時も複数ファイルで同じ変更を
しなくてはならず手間です。

設計を変えたほうがいいのかなあ。でもすぐにはいい方法を思いつきません。
0977nobodyさん2006/01/14(土) 16:55:44ID:???
クラスのextends元を複数選択して、統合されたクラスを作成することはできますか?
0978nobodyさん2006/01/14(土) 17:02:06ID:???
>>976
class定義の1行しか違わないんなら、元になるソースファイルを1個だけ用意して
それをベースに改良等を行い、修正したらバッチでDBの数だけ置換コピーして
実際に使用するクラス定義ファイルを生成する。みたいな手順にしちゃえば?
動的に実行時指定できるようにするほどの内容には思えないけど。
0979nobodyさん2006/01/14(土) 17:02:52ID:???
>>977
PHPでは多重継承はサポートしていません
0980nobodyさん2006/01/14(土) 17:03:08ID:???
>>976
extends したクラスをインスタンス化したものを保持する
ラッパークラスを作る

外からの操作はそのラッパーオブジェクトを介して行う
09819502006/01/14(土) 17:23:30ID:aUotD7Tf
>>980
$this->wrapper->method() となるのはちょっとやだなと思ってたのですが、
よく考えると、それをさらにラップすれば、$this->method() で取り扱えますね。
継承の階層が多くなっちゃいますけど、方法としてはこうなるのかな。
09829772006/01/14(土) 17:24:01ID:???
>>979
そうですか、ありがとう。
0983nobodyさん2006/01/14(土) 18:35:21ID:???
>>980
Strategyパターン
0984nobodyさん2006/01/14(土) 18:37:40ID:ILCMT976
こういう場合はどうすれば良いのでしょうか?

print("<strong>"$data[0]."</strong>は面白い\n");

こうすると「syntax error, unexpected T_VARIABLE」という
エラーが出てしまいます。
0985nobodyさん2006/01/14(土) 18:54:06ID:???
>>984
>>839
>>840
09869852006/01/14(土) 18:55:25ID:???
と思ったら違った。
print("<strong>".$data[0]."</strong>は面白い\n");
「.」が抜けてるだけだ。
0987nobodyさん2006/01/14(土) 18:55:55ID:???
>>984
$data[0] の前の . が抜けてるだけ
もっと頑張りましょう
0988nobodyさん2006/01/14(土) 18:57:35ID:???
俺はこの種のミスを防止するため、文字列連結の . は必ず . の前後に空白を空けるようにしてる。
同様に引数区切りなどの , は後ろに空白を空けるようにしてる。
0989nobodyさん2006/01/14(土) 19:12:43ID:ILCMT976
ホントだ、小さなミスを見落としていた。
もっとガンバロ((`・ω・)
0990nobodyさん2006/01/14(土) 19:53:46ID:???
次スレ立てときましょうかね。
なんかここって本スレより勢いある上に
本スレよりまともな質問も多い気がするのは気のせい?w
0991nobodyさん2006/01/14(土) 20:01:56ID:???
>>949
ありがとうございます
0992nobodyさん2006/01/14(土) 20:07:28ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0993nobodyさん2006/01/14(土) 20:28:39ID:???
微妙だな、埋めろ。
0994nobodyさん2006/01/14(土) 20:29:11ID:???
>>992
乙
0995nobodyさん2006/01/14(土) 20:29:38ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0996nobodyさん2006/01/14(土) 20:29:46ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0997nobodyさん2006/01/14(土) 20:30:09ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0998nobodyさん2006/01/14(土) 20:30:17ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
0999nobodyさん2006/01/14(土) 20:30:42ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
1000nobodyさん2006/01/14(土) 20:30:54ID:???





次スレ

【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/





10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。