1 名前:● mailto:sage [2009/11/14(土) 17:31:22 ID:???] 質問者はまず>>1 を良く読むこと(必須!) 過去スレ、関連スレ、FAQなどは>>2-10 辺り 次スレは>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 ◆前スレ 【PHP】下らねぇ質問はID出して書き込みやがれ 89 pc11.2ch.net/test/read.cgi/php/1255263534/ ◆質問用テンプレ 【OS名】vine linux 【PHPのバージョン】php5.26 【連携ソフトウェア】mysql 【質問内容】 ◆質問する時の注意 ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す) ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 (PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。) ◆質問後の注意 ・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。 【その他諸注意】 ・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
76 名前:nobodyさん [2009/11/18(水) 21:40:40 ID:/HH3qrl4] >>69 ありがとうございます。 書いていただいてソースを元に public function __construct($result,$Lib_Kind){ if($Lib_Kind==1){ while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { $this->buffer[DB_FETCHMODE_ASSOC][] = $row; } while ($row = $result->fetchRow(DB_FETCHMODE_ORDERED)) { $this->buffer[DB_FETCHMODE_ORDERED][] = $row; } while ($row = $result->fetchRow(DB_FETCHMODE_OBJECT)) { $this->buffer[DB_FETCHMODE_OBJECT][] = $row; } }elseif($Lib_Kind==2){ while ($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC)) { $this->buffer[MDB2_FETCHMODE_ASSOC][] = $row; } while ($row = $result->fetchRow(MDB2_FETCHMODE_ORDERED)) { $this->buffer[MDB2_FETCHMODE_ORDERED][] = $row; } while ($row = $result->fetchRow(MDB2_FETCHMODE_OBJECT)) { $this->buffer[MDB2_FETCHMODE_OBJECT][] = $row; } } } public function fetchRow($mode){ return array_shift($this->buffer[$mode]);} $Lib_Kindが1だったらPEAR::DB、2だったらPEAR::MDB2使用 とソース書き直してみました。
77 名前:nobodyさん [2009/11/18(水) 21:43:23 ID:/HH3qrl4] >>69 >確かに5.3で挙動が変わってるナー どうせやるなら他のDB系関数の挙動も変更すればいいのに それにしてもなんでこんな中途半端(SQLiteのみ)な仕様変更したんだろう?
78 名前:nobodyさん mailto:sage [2009/11/18(水) 21:47:22 ID:???] >>76 なんで全部fetchしてんの? あとfetchAllがあるよ
79 名前:nobodyさん mailto:sage [2009/11/18(水) 22:10:31 ID:???] >>78 とりあえずMDB2で説明すると pear.php.net/manual/ja/package.database.mdb2.intro-fetch.php while ($row = $result->fetchRow()) { だった場合拾う値はデフォルトである MDB2_FETCHMODE_ORDEREDのみの型。 MDB2_FETCHMODE_ASSOCやMDB2_FETCHMODE_OBJECT の値も別途取得する処理を書いておく必要がある。 ただしMDB2_FETCHMODE_OBJECTの書き方はオブジェクトとして取得するのでなんか変な気がする。
80 名前:nobodyさん mailto:sage [2009/11/18(水) 22:22:48 ID:???] >>75 >勝手にやってくれる? kwsk
81 名前:nobodyさん mailto:sage [2009/11/18(水) 23:08:03 ID:???] >>76 こういうコードがサーバー落とすんだなw
82 名前:nobodyさん mailto:sage [2009/11/18(水) 23:22:39 ID:???] >>81 だったら君はどんなコード書く? 元々SQLiteは大規模開発にはむかないDB。 そんなSQLite限定で利用すると考えればそんなに負荷がかかるかな?
83 名前:nobodyさん [2009/11/18(水) 23:27:05 ID:nmLyX5fb] >>75 strictで使える要素と属性、framesetで使える要素と属性・・・のように必要なものだけを取得するようなことをしてます 目的はdoctype別補完辞書作成の為なんです IDEは全て試したわけではありませんがaptanaとDreamweaverを試した限りではあるdoctyleに対応しない属性が出てきますし足りない属性も出てきます 反応良かったらコード公開するつもりでした 質問は締め切りROMに戻ります ますありがとうございました
84 名前:nobodyさん mailto:sage [2009/11/18(水) 23:44:48 ID:???] >$Lib_Kindが1だったらPEAR::DB、2だったらPEAR::MDB2使用 クラス使う意味が半分かそれ以上消えとるな。
85 名前:nobodyさん mailto:sage [2009/11/19(木) 00:01:54 ID:???] >>84 kwsk
86 名前:nobodyさん mailto:sage [2009/11/19(木) 00:29:52 ID:???] 20年ほど前の、プログラミング言語C++でもしっかり明記されとるわな。 switch〜caseは止めれって。(if〜elseifの羅列も同じこと) C++には相変わらずinterfaceは導入されて無い(よね?)けど、 それ以降出てきた言語たちにはinterfaceなんて有りがたいものが あるんだから、よりその言葉に従うのが楽だわな。
87 名前:nobodyさん mailto:sage [2009/11/19(木) 00:48:25 ID:???] >>86 でも、それってPHP5だけを考慮に入れた場合は良いけど、PHP4まで考慮に入れたシステムの場合NGでは? PHP4が、サポート終了ってなっているがPHP4系がいまだに使われているサーバなんて大量にまだあるからPHP4に対するプログラムの サポートってなかなか切れないよ。
88 名前:87 mailto:sage [2009/11/19(木) 01:03:22 ID:???] 追加。 今回のようなマルチな環境に対応させるくらいのシステムなんだから古いシステムも考慮した上での作りだと思うよ。 そもそも、新しいのだけを考慮しているシステムならPHP4どころかPEAR::DBもシステムから外すべき物。 pear.php.net/package/DB >This package has been superseded, but is still maintained for bugs and security fixes. Use MDB2 instead. ぶっちゃけな訳しかたすると「バグとセキュリティーのためにサポートは続くがMDB2って言う後継出ているからそっち使えよ。」 PEARはPHPで書かれたライブラリだから必ずしもpearコマンドでインストール必要もなく インストールされてないレンタルサーバでもアーカイブDLしてきてプログラムから呼び出すパスを、通せばいくらでも使える。 と言うわけで、プログラムの更新作業するのにDBは、「いらない子」。 MDB2とPDOをサポートするだけのプログラムにした方が良い。 PEAR::DB,PEAR::MDB2,PDOとサポートさせるプログラムを書いている奴が、PHP4のサポートをごっそりと打ち切ったプログラム書くのか?
89 名前:87 mailto:sage [2009/11/19(木) 01:27:04 ID:???] >>87 ,>88書いて気になったけどここ見ている人たちってDB関連は、 ・PEAR::DB ・PEAR::MDB2 ・PDO ・そんなものラッパ使わない。各DB関数直接使う どれが多い? それと ・必須環境はPHP5以降。PHP4は切り捨てた。 ・必須環境はPHP4以降。PHP4もサポートし続ける。 に関してもどうしている?
90 名前:nobodyさん mailto:sage [2009/11/19(木) 01:39:54 ID:???] ・PHP5or4のみでサポートされている関数は使わない ・せっかく専用の関数が有るのだからそれらを纏めて抽象化
91 名前:nobodyさん mailto:sage [2009/11/19(木) 01:57:50 ID:???] >>89 IDと元質問のレス番号出しなさい。
92 名前:nobodyさん mailto:sage [2009/11/19(木) 01:59:56 ID:???] >>79 >別途取得する処理を書いておく必要がある それがアホ設計だと言ってるんだがw デザインパターンとか知らんのかね
93 名前:nobodyさん [2009/11/19(木) 02:00:09 ID:7S9/ReIJ] >>86 教科書通りのお手本を書く場合ならそれでいいけど、interfaceの実装はPHP5から。 さて私はPHP4の動作を対象外にしてまでinterfaceを使うべきですか? PHP4を対象外にするならPHP5もPHP5.1から動作対象としてDBもPEAR::DBとPEAR::MDB2も切り捨ててより速度が出るPDOだけにしますよww
94 名前:nobodyさん mailto:sage [2009/11/19(木) 02:03:51 ID:???] そうしろよ
95 名前:nobodyさん [2009/11/19(木) 02:32:52 ID:7S9/ReIJ] >>92 デザインパターンの有効性って再利用時などに使いやすくなどだよね。 一時しのぎようのクラスにまでそのものが必要かどうかの天秤にかけると別にデザインパターンに 沿った作りにしないでもごり押しでソース書いておけばとりあえずはいいや。って結論になったアホな俺。 >>94 単純に切り捨てができれば苦労しない。
96 名前:nobodyさん mailto:sage [2009/11/19(木) 03:12:12 ID:???] 再利用だのそんな問題ではなく >>76 を見て何とも思わないん? まぁ書いた本人だから思わないんだろうけど、今後もプログラム書いていくなら もうちょっとここの人達の意見にも耳を傾けてみたほうが幸せになれるんじゃないかなと思う次第
97 名前:nobodyさん mailto:sage [2009/11/19(木) 03:41:33 ID:???] >>76 継承を覚えろ。