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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/04/12(木) 16:54:47ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 43
http://pc11.2ch.net/test/read.cgi/php/1175368910/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0304nobodyさん2007/04/18(水) 02:24:40ID:???
method()->hoge();
が、でPHP5できるようになったから、
PHP6では>>302ができるようになるはず!
0305nobodyさん2007/04/18(水) 02:45:15ID:???
そんなのより文法にクロージャを。create_functionみたいな間抜けなやつはいらん。
0306nobodyさん2007/04/18(水) 03:09:10ID:???
なんでここIDでないの?おしえてエロい人
0307nobodyさん2007/04/18(水) 06:15:48ID:2pczTFS7
urlを読み込んで、色々処理したいということで
いくつか関数を調べたのですが
どれも失敗しました。
他に何か方法は無いでしょうか?
phpのバージョンは4.2.3です。

$html=domxml_open_file($url);
同一行を指示した同じようなwarningが沢山でて使えませんでした。

$html=fopen($url,"r");
Noと言われる。

$html=implode("",file($url));
bad argument

$html=file_get_contents($url);
undefined function
0308nobodyさん2007/04/18(水) 06:19:49ID:???
>>307
ソースとエラーをきちんと晒せ。
最低限エラーはきちんと書かないと分からない。
03093072007/04/18(水) 06:48:07ID:2pczTFS7
$url=$_POST['url'];

//$html=file_get_contents($url);
//$html=fopen($url,"w");
//$html=implode("",file ($url));
//$html=domxml_open_file($url);

$text=strip_tags($html);

print $text;

です。//をそれぞれ外して出たエラーは

$html=file_get_contents($url);
Fatal error: Call to undefined function: file_get_contents() in c:\phpdev\www\ereg.php on line 21

$html=fopen($url,"w");
Warning: fopen("http://en.wikinews.org/wiki/33_dead%2C_15_injured_in_Virginia_Tech_University_shootings";, "w") - No error in c:\phpdev\www\ereg.php on line 24

$html=implode("",file ($url));
Warning: file("http://en.wikinews.org/wiki/33_dead%2C_15_injured_in_Virginia_Tech_University_shootings";) - No error in c:\phpdev\www\ereg.php on line 26

Warning: Bad arguments to implode() in c:\phpdev\www\ereg.php on line 26

03103072007/04/18(水) 06:54:18ID:???
$html=domxml_open_file($url);
は行数制限でそのままコピペできないので意味のありそうなとこを
クリップします。

Warning: http://en.wikinews.org/wiki/33_dead_15_injured_in_Virginia_Tech_University_shootings:234: in c:\phpdev\www\ereg.php on line 19

Warning: error: in c:\phpdev\www\ereg.php on line 19

Warning: Entity 'nbsp' not defined in c:\phpdev\www\ereg.php on line 19

Warning: e='submit' name="go" class="searchButton" id="searchGoButton" value="Go" />&nbs in c:\phpdev\www\ereg.php on line 19

Warning: ^ in c:\phpdev\www\ereg.php on line 19

Warning: Entity 'reg' not defined in c:\phpdev\www\ereg.php on line 19

Warning: ons Attribution 2.5 License unless otherwise specified.
WikinewsR in c:\phpdev\www\ereg.php on line 19

Warning: Opening and ending tag mismatch: br and li in c:\phpdev\www\ereg.php on line 19

Warning: ource="http://web.resource.org/cc/DerivativeWorks";/> -->c:\phpdev\www\ereg.php on line 19

Warning: Premature end of data in tag 0.064 secs. --> in c:\phpdev\www\ereg.php on line 19
0311nobodyさん2007/04/18(水) 07:23:21ID:???
このスレでも稀に見る極度のゆとり・・・
0312nobodyさん2007/04/18(水) 07:55:03ID:???
curlは?
0313nobodyさん2007/04/18(水) 08:00:50ID:???
ろくに見ないで答えて見たけど読んでみたらそれ以前の問題が多いなw
携帯だから細かくかけないけどとりあえずwはねえだろ
0314nobodyさん2007/04/18(水) 08:15:20ID:???
すいません。wは念のためやったのがそのまま残ってただけです。
rでやっても同じでした。
0315nobodyさん2007/04/18(水) 09:15:02ID:???
>>309
>>Fatal error: Call to undefined function: file_get_contents() in c:\phpdev\www\ereg.php on line 21
まずもって、この意味もわからんやつが、domxml_open_fileなんぞという関数を使おうと思うな。
0316nobodyさん2007/04/18(水) 12:06:59ID:???
$html=fopen($url,"w");
print $text;
せめてfopenぐらいは勉強してから質問しる
0317nobodyさん2007/04/18(水) 12:30:02ID:???
>>315
それ見ただけで原因が分かるな
バージョンが違うだろって
0318nobodyさん2007/04/18(水) 15:16:23ID:???
<pre>
<?php
$url = "http://www.google.com/";;
$list = file($url);
foreach ($list as $val) {
echo htmlspecialchars($val);
}
?>
</pre>
0319nobodyさん2007/04/18(水) 15:54:19ID:???

スクリプトだけ書いて一切言葉しゃべらない人いるよね
まじキモイんですけど…
0320nobodyさん2007/04/18(水) 16:00:42ID:???
貴重なノウハウを教えてくれてるんだろ?
立場を弁えろ
おめーのほうがきもいんだよ
0321nobodyさん2007/04/18(水) 16:01:58ID:???
echo '>>319 レス乞食乙。ほらほらうれしいでちゅか〜?';
0322nobodyさん2007/04/18(水) 16:03:55ID:???
あとはわからない関数は自分で引いて自分で考えろってことだろ。
それすら理解できないならPHPなんてやらないほうがいいよ。
0323nobodyさん2007/04/18(水) 16:04:24ID:???
319の発言に結構ショックを受けた。
何百の言葉よりも簡潔なコードがどれほど雄弁に語っているかがわからないその感性に。

03243072007/04/18(水) 16:08:19ID:2pczTFS7
>>318
レスどうも。
fileは
wikinewsでは使えないみたいです。
結局fsockopenでやりました。
0325虚弱PHP2007/04/18(水) 16:11:52ID:???
>>307
PHPのバージョンが古すぎる…。
ひとまず、最新版を入れよう。そしてマニュアルを読もう。
0326nobodyさん2007/04/18(水) 16:14:00ID:???
>>318がキモいのは流れぶった切って しょーもないコード書いちゃってるところ
0327nobodyさん2007/04/18(水) 16:16:11ID:???
>>326
>>307を見る限り間違った答えではないと思うが?
0328nobodyさん2007/04/18(水) 16:18:29ID:???
>>307に必要なのは初歩から勉強することだろ
0329nobodyさん2007/04/18(水) 16:23:00ID:???
>>328
そういう態度だから上から見てるとか偉そうだとか言われるんですよ。
0330nobodyさん2007/04/18(水) 16:25:49ID:???
>>327
>>326はPHPについて興味津々で話題に入れて欲しくてたまらないけど、
コードは読めないしああいうことしか言えないんだから、
そっとしておいてあげようじゃないか。
0331nobodyさん2007/04/18(水) 16:39:23ID:???
>>329
お前、無償で役立つアドバイスをしてもらえることがどれ程有難いことか分かってないのか?
そんな甘ったれた考えだと社会に出てから苦労するぞ
(つーかどこにもそんなこと言われてねーし)
0332nobodyさん2007/04/18(水) 16:41:51ID:???
社会に出てから苦労するのは>>331だと思ったw
ほんと上から見てるなw
0333nobodyさん2007/04/18(水) 16:43:29ID:???
>>331
社会人が平日のこんな時間にこんなスレに張り付いてるわけない。
社会人ぶったニート乙。

>>333
ニート乙
0334nobodyさん2007/04/18(水) 16:47:21ID:???
>>333
社会人だけど
0335nobodyさん2007/04/18(水) 16:47:57ID:???



ここまでテンプレ。

では次の質問者の方どうぞ。
0336nobodyさん2007/04/18(水) 16:54:21ID:???
この時間にレスしてる=ニート
としか想像できないやつも滑稽だな。
そこまでして忠告に対して耳をふさぎたいのか。
0337nobodyさん2007/04/18(水) 16:58:00ID:???
もういいから引っ込んでろよニート。
まぁ社会人ならこの時間にレスしてる確率なんてかなり低いけどな。
夜勤とか夜の仕事とかいくらでも言い訳はあるが。

あと忠告とは言わない。ただの余計なお世話。
回答者にかみついてる方がよほど滑稽。
答える気ないならいちいちレスしなくていいからROMっててよ。

はいはい次次。
0338nobodyさん2007/04/18(水) 17:10:46ID:???
いいクマ専用しおり
_____________________________
   ∩___∩
   | ノ      ヽ
  /  ●   ● |  
  |    ( _●_)  ミ
 彡、   |∪|  、`\
/      ヽノ      \
~~~~~~~~~~~~~~~~~~~~~~~~
    ここまであまさず読んだ
0339nobodyさん2007/04/18(水) 17:13:21ID:s4cVlRv3
phpMyEditを使って、DBのメンテ画面を作っているのですが、
編集画面でコンボボックスを使う方法がわかりません(><
0340nobodyさん2007/04/18(水) 17:19:38ID:???
>>337
もっと謙虚にならないとだめだぞ。
質問スレで回答者に対して敬意を払うのは当たり前。
「初歩から勉強すること」と言われただけで上から見てるとか偉そうだとかいうのは
勘違いもいいところ。一言で言えば「立場を弁えろ」。
初歩から勉強することの大事さが分かってないのかな。
基本を知らないで正解だけ教えてもらっても後々それ以上に苦労するもんだよ。

実際PHPの知識量では下なんだから仕方ないだろ。
上から見られた悔しさをばねに学べばいい。
というかそうしないと永遠に下のままだ。
本筋と関係ないところで個人攻撃して憂さ晴らしても何も良い方向には進まんよ。
0341nobodyさん2007/04/18(水) 17:28:06ID:???
マジレスしてみよう

>>337
社会人になればわかるが、平日に休むことは割りとある。
振り替え休日やシフト勤務、有給に体調不良、理由はいくらでもある。
加えて、平日の昼間にだって(本当は良くないが)2ちゃんに書き込みする暇なんざ
少なからずある。
まあ、社会人になればわかるさ。
0342nobodyさん2007/04/18(水) 17:31:18ID:???
>>340
自分の考えを他人に押し付けるのはよくない。
勉強の仕方なんて千差万別。

あと話がズレすぎ。
そもそも>>326みたいなレスをするのが悪いんでしょ。
ここが何のスレかをもう一度考えたほうがいい。
0343nobodyさん2007/04/18(水) 17:41:32ID:???
>>318
確かに何も書いてないと一瞬見てただの質問者かと思った

その後のやり取りにワロッタw
0344nobodyさん2007/04/18(水) 17:42:10ID:???
>>341
社員でシフトって鯖管ぐらいじゃないの?
このスレ見てる大半がIT関連企業で働いてるっていう認識が間違ってるのか?
0345nobodyさん2007/04/18(水) 18:02:13ID:???
で それがどうPHPのくだ質なんだ?
0346nobodyさん2007/04/18(水) 18:09:51ID:???
ぶっちゃけ学生も多いんじゃないかな
そんな俺はまさに今仕事中な駄目社員ですけど…
0347341 2007/04/18(水) 18:16:19ID:???
>>344
んなこたあない。
保守対応とかで24時間待機とかの場合、プロジェクトメンバの中でシフト体制を組む。
後は客先の事情に合わせたりする場合もあるし、鯖管だけとは限らないよ。
でかいプロジェクトだと一ヶ月くらいは24時間待機になったりするね。
あと、なんか新規機能のリリースとかでも監視対応でシフトになったりするな。
で、
>このスレ見てる大半がIT関連企業で働いてるっていう認識
んなこたあなかろ。
0348nobodyさん2007/04/18(水) 18:29:29ID:???
mysqlの板がないのでここで質問してみたりする。。

LIKE%-%でなぜかない文字が検索される。

「草」と検索すると「石」もヒットする。
確認できてるのはこれだけなのだけど、なんでなのかな?
0349nobodyさん2007/04/18(水) 18:31:10ID:???
学生 3割
社会人 6割
ttp://jimaku.in/w/TjCXdlPQraI/N_Xj1b_hnVz 1割
0350nobodyさん2007/04/18(水) 18:32:53ID:???
>>348
ぐぐれよ

http://www.google.co.jp/search?hl=ja&rls=GFRC%2CGFRC%3A2007-02%2CGFRC%3Aja&q=mysql+%E3%82%B9%E3%83%AC&lr=
http://www.google.co.jp/search?hl=ja&rls=GFRC%2CGFRC%3A2007-02%2CGFRC%3Aja&q=mysql+2ch&lr=
0351nobodyさん2007/04/18(水) 18:56:31ID:???
デスマーチにでもなれば時間の感覚なんて無くなりますよ
0352nobodyさん2007/04/18(水) 19:01:24ID:???
>>349
wwwwwwwwwwwwwwwwwwww
0353nobodyさん2007/04/18(水) 19:40:49ID:???
>350
どもです。そっちで聞いてきます。めんぼくないです。
0354nobodyさん2007/04/18(水) 20:41:49ID:???
>>349
warota
0355nobodyさん2007/04/18(水) 21:01:50ID:???
>>349
前スレのだったか忘れたが、そのやり取りがないと効果半減じゃないか!
0356nobodyさん2007/04/18(水) 23:15:28ID:???
フォルダ内の複数の画像をリンクをクリックしてPHPに出力するスクリプトを教えてくだちい
ftpでフォルダにうpするだけで勝手に閲覧できるようにしたいんですがあとは↑だけなのにやり方がわかりませんぬ
0357nobodyさん2007/04/18(水) 23:56:01ID:???
>>356
日本語でおk
0358nobodyさん2007/04/19(木) 00:12:44ID:???
>>356
書いてることがよくわからないので見当違いかもしれないが、
マニュアルのreaddirの例479じゃない?
例479の
echo "$file\n";
を、
echo "<a href=\"{$file}\">{$file}</a><br>\n";
とかにすればいいんじゃないかと。
0359nobodyさん2007/04/19(木) 01:30:59ID:???
>>356
フォルダに画像をアップして、そのフォルダ内にindex.htmlやindex.htmをおかなければOK
0360nobodyさん2007/04/19(木) 01:59:37ID:???
>>359
それはApacheのindexesがオンになってたらの話だろ。
セキュリティ上普通はオフにしてある。
htaccessが使用可能ならindexesをオンにできるが、
そうなるとスレ違いだ。
0361nobodyさん2007/04/19(木) 03:45:01ID:???
おまいら様がクラス作るときは
Javaみたいに1クラス1ファイルで書いてらっしゃる?

そもそもクラスなんて書かねぇ、てのは無しで
0362nobodyさん2007/04/19(木) 04:00:05ID:???
関連するクラスは1ファイルにまとめたりするよ。
何らかのオブジェクトとそのコレクションを収めるためのクラスとかね。
0363nobodyさん2007/04/19(木) 08:33:00ID:???
基本は1クラス1ファイルだな。
数クラスで完結するような小規模スクリプトは一ファイルですましちゃうけど。
0364nobodyさん2007/04/19(木) 10:01:37ID:hqZ1gGO6
copy関数って256倍と超えるパス指定したらだめなの?
0365nobodyさん2007/04/19(木) 10:49:03ID:???
>>364
やってみろ
0366nobodyさん2007/04/19(木) 11:06:01ID:???
<?php include('header.php'); ?>
<p>なんたらかんたら</p>
<?php include('footer.php'); ?>

とするより、1つのPHPファイルにまとめて

<?php include('chinko.php'); printHeader(); ?>
<p>なんたらかんたら</p>
<?php printFooter(); ?>

ってやるほうが賢い選択でしょうか?
教えてエロイ人
0367nobodyさん2007/04/19(木) 11:07:26ID:???
いや頭悪い選択
0368nobodyさん2007/04/19(木) 11:16:12ID:???
そもそもPHP使う時点で頭悪(ry
0369nobodyさん2007/04/19(木) 11:16:39ID:hqZ1gGO6
>>365
パス間違ってないのに関数がFALSE返してコピーされないのよ。
ちなみにwindows版。
0370虚弱PHP2007/04/19(木) 11:19:49ID:???
パスの255バイト制限ってWindowsの仕様じゃなかったっけ?
0371nobodyさん2007/04/19(木) 11:53:40ID:???
copy じゃないけど mkdir()で試してみたら
245バイトまでOKだったな。
多分windowsの制限じゃないの?
0372nobodyさん2007/04/19(木) 12:23:32ID:suDQqd22
MySQLのDBに、データをInsertした際に、auto_increment させたフィールドの値を確認する方法ってありますか?
03733662007/04/19(木) 12:24:23ID:???
>>367
その心は?

>>368
その心は?
0374nobodyさん2007/04/19(木) 12:36:20ID:???
>>372
phpMyAdminとかでみればいいんでねーの?
0375nobodyさん2007/04/19(木) 12:37:41ID:???
掲示板でユーザーが投稿→投稿ないようをそのままPHPファイルのindex.phpに「書き込んで」表示
の場合、<?php 〜〜〜 ?>をエスケープするだけでいい?
(しないとPHPコードが実行されるような状態)
ちなみにタグOKなのでhtmlspecialcharsはしません
0376nobodyさん2007/04/19(木) 12:56:30ID:???
>>372
http://pc11.2ch.net/test/read.cgi/php/1164617202/377-
>>375
index.phpに書き込んで表示の意味が分からない
0377nobodyさん2007/04/19(木) 13:08:25ID:???
>>372
つlast_insert_id

PHP固有の話ではないのでスレ違いだな。
さらに話を続けたければMySQLのスレに行くべし
0378nobodyさん2007/04/19(木) 13:19:55ID:???
>>375
index.phpが投稿内容を表示するページってことか?
んで投稿内容にPHP開始タグがあるとPHPが実行されるからエスケープするって?
0379nobodyさん2007/04/19(木) 13:35:51ID:WBNGWxYV
共通する箇所(データベースから指定データを読み込みなど)は、
class化して、用途に応じてそのclassを実行しているのですが、
複数ファイル内に同じソースの結構があって、このclass処理の部分を
まとめるか否かで悩んでいます。

まとめる=関数にすると言ったイメージがあるのですが、
そもそも関数をまとめているのがclassなわけで、なんか変だと思います。

ただ、共通するclassの部分は別ファイルにして、requireするだけで
良いのかな?とも思いますが、それで良いのかどうかも迷います。

文章では伝わりにくいかもしれませんが、アドバイスいただければ助かります。
0380nobodyさん2007/04/19(木) 13:36:54ID:???
修正

複数ファイル内に同じソースの結構があって ↓
複数ファイル内に同じソースの箇所が結構あって
0381nobodyさん2007/04/19(木) 13:55:12ID:???
同じようなコードを何度も書く羽目になったらそれはどこか
間違えている。まーでもPHPは貧弱だから止むを得ないことも...
03823752007/04/19(木) 14:08:54ID:???
>>376
>>378
投稿された文字列をログに入れてecho で表示するんじゃなくて、
PHPファイルに直接書き出すので、
<?php "ああああああああ"?>と入力されると
あああああああが表示されてしまう状態

この場合、PHPがコードとして評価されるのを防げば、
PHP的なセキュリティはOKですか?
0383nobodyさん2007/04/19(木) 14:10:02ID:???
同じコードを何度も書くならモジュール化して使いまわせばいいんじゃない?
それを実装するための手段として関数だろうがクラスだろうが何でも構わない。
自分にとって便利な方法使えばいいと思うよ。
0384nobodyさん2007/04/19(木) 14:11:07ID:???
>>382
掲示板でそんな機能付けるな
03853752007/04/19(木) 14:29:40ID:???
>>384
過去ログ機能をそなえた実にすばらしいアイデアなんですよ
書き込むファイルは日付けを元にしたファイル名なので、
日付けが変わるとファイルが切り替わって過去ログになる
いちいち作り直さなくてもOK

20070419.php

<!--ヘッダ部分-->
わたしの掲示板です
あなたは<?php /*カウンタのコード*/ ?>番目のPHP大好きっ子です!
<!--ここから投稿内容 追記モードで書き込む-->
〜〜〜
〜〜〜
〜〜〜
0386nobodyさん2007/04/19(木) 14:38:01ID:???
>>385
ごめん、ID出ていないから別人の成りすましかもしれないが
何を言いたいのか全然分からん
0387nobodyさん2007/04/19(木) 14:52:31ID:???
>>386
>>375はindex.phpを書き換えるって書いてるから別人だろう
htmlを書き換えるなら分かるがなぜphpを書き換える必要があるのか理解に苦しむが
0388虚弱PHP2007/04/19(木) 15:14:29ID:???
SSIみたいなことやりたいんじゃないかな。
まあ、「タグOKなので」の時点で多分XSSし放題。
03893642007/04/19(木) 15:16:34ID:hqZ1gGO6
>>370-371
どうしようもないので、こんな関数作ってみたら成功。
function excopy($src, $dst)
{
exec("copy \"{$src}\" \"{$dst}\" 2>&1", $ary, $ret);
return ($ret == 0) ? TRUE : FALSE;
}
性能には全く変わらず。

phpの内部でパスのバッファが256バイトぐらいの固定長なのかねぇ?
0390虚弱PHP2007/04/19(木) 15:17:30ID:???
>>379
> まとめる=関数にすると言ったイメージがあるのですが、
> そもそも関数をまとめているのがclassなわけで、なんか変だと思います。

ここら辺の認識がちょっと違うような気がする。
classをclassとして有効に使うというより、
単なるネームスペースみたいなものとして使ってるんじゃないかな。
0391nobodyさん2007/04/19(木) 15:18:19ID:RzPJY5VS
失礼します。質問させていただきます。
ユーザー登録で”半角英数字のみ”という判定をしたいのですが、どのように判定すればいいでしょうか?
よろしくお願いします。
0392nobodyさん2007/04/19(木) 15:20:29ID:???
>>391
正規表現で対応可能。
専用のスレがあるから、次からはそっちで。

if(preg_match("/[^a-zA-Z0-9]/",$str)){
半角英数字以外があった時の処理
}
03933912007/04/19(木) 15:22:08ID:RzPJY5VS
>>392
ありがとうございました。さっそく試してみます。
0394虚弱PHP2007/04/19(木) 15:32:45ID:???
>>389
よくわからないので、簡単に調べてみた。
Windowsではフルパスが
MAX_PATH 260
で定義されてて、
PHPのソースでもそのまま使ってるみたい(たぶん /main/php.h)。
execだとOSがショートファイル名使ってるのかもしれないね。
0395虚弱PHP2007/04/19(木) 15:36:50ID:???
>>391
ctype_alnum()が推奨だったかもしれない。
03963792007/04/19(木) 16:07:02ID:???
>>381,383
例えば、「データベースに登録している特定の情報を出力するclass(又は関数)」
があったとして、それをlist.phpでもsearch.phpでも使用している。
という事に関してこれで良いのか否か悩む時があります。
list.phpでもsearch.phpでも同じコードを書くわけですから、classの意味があるのかと。

自分にとってはclass化(モジュール化)してだいぶ効率が上がったのですが、
更に効率が上がる方法はないかと思い、質問した次第です。
>>390
その判断が正直わかりません。他者のコード(例えばXOOPSやphpbbなど)
を見ても、同じコードが出てくる箇所は結構あるし。
周りに聞ける人間がいないので、自分のコード・組み立て方は正しいのか
どうか迷う時があります。WEBシステムとして動けば良いのでしょうが。。
0397nobodyさん2007/04/19(木) 16:15:17ID:???
>>396
状況がよくわからないけど、ほとんど同じ振る舞いをするバリエーションであれば、
共通部分を括りだして基底クラスを作って、改めて既存のクラスをそこから派生させてやればいいのでは?
0398虚弱PHP2007/04/19(木) 16:52:24ID:???
>>396
もうちっと具体的にならないと、
どう設計したらいいかのアイデアは出てこないと思う。

例えば、こういった感じのふたつの処理があるとする。
1) update.php(更新→リスト表示)
2) list.php(リスト表示)

この場合、リスト表示は同じ処理になっちゃう。
でも同じ処理なんだから共通化したいよね。

そしたら処理を細分化して、
1. function update()
2. function list()

1)' 1を呼ぶ → 2を呼ぶ
2)' 2を呼ぶ

とすることで解決。
ここら辺はできてるんじゃないかな?
MVCフレームワークだと1)'や2)'がControllerだね。
1や2がModel。

1)'' 1を呼ぶ → 2を呼ぶ → 表示処理
2)'' 2を呼ぶ → 表示処理

とすると一応MVC。
で、>>396 は何に悩んでいるかだ。
0399nobodyさん2007/04/19(木) 16:58:17ID:???
>>397が答えだと思うのだが。
0400nobodyさん2007/04/19(木) 16:58:19ID:???
ここでupdate.phpとlist.phpに同じクラス書いてるとエスパー
0401虚弱PHP2007/04/19(木) 17:06:06ID:???
1を呼ぶ、2を呼ぶとかをもうちょっと整理すると、
Mojaviで言うActionChainになると思う。

で、ActionChainみたいなのはContollerより上位の考え方だし、
Controllerよりもっと基本レベルで、
(例えば)入力の標準的なValidatorを通したいとか、
権限によって処理を実行するかしないかみたいな、
振り分けをしたいと思うようになる。

そうしたら、Javaで言うServletコンテナみたいなコンテナを用意して
そこら辺の処理をやらせたり。

…とここら辺で俺は満足しちゃったんだけど。
04023792007/04/19(木) 17:08:05ID:???
>>397-98
詳しくご説明ありがとうございます。
例えば
a)function memberData(); //会員情報を表示
b)function bbsData(); //掲示板の書き込み内容
c)function categoryData(); //カテゴリ

があるとします。この基本セットは
登録一覧表示(list.php)や検索表示(search.php)
など、一般的にしようするとします。

しかし、list.phpにdが出てきた場合はどうするか?list.phpにdの関数(又はclass)
だけ追加してやればいいのか?もしくは、外部ファイルに分けて読み込むように
した方が良いのか?と言うのが悩みです。

398さんの例で言うと (共通した3を追加する場合)
1を呼ぶ→2を呼ぶ→3を呼ぶ
2を呼ぶ→3を呼ぶ

で良いのかな?と思うわけです。わかりづらかったらすみません。
0403nobodyさん2007/04/19(木) 17:08:41ID:???
どうやってPHPでServletコンテナみたいなものを実現させるの?
0404nobodyさん2007/04/19(木) 17:11:07ID:???
>>402
やっぱり同じクラスを2つのページに書いてるの?
処理a, b, c, dがあるクラスを両ページでincludeすればいいんじゃないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています