【PHP】下らねぇ質問はID出して書き込みやがれ 88
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/09/16(水) 09:39:37ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0478nobodyさん
2009/09/30(水) 15:17:52ID:erJ6uHWW<li>リストです</li>
</ul>
というHTMLから「リストです」の部分を抽出したいと思い
preg_match("/<ul><li>(.*?)<\/li><\/ul>/s",$html,$array);
という正規表現を書いたのですが、抽出できません。
見直すとHTMLが改行されていたので、改行を削除したら抽出されました。
しかし、改行する場合・しない場合もあり、両方対応させたいと思います。
上記コードをどのように変更すればいいのでしょうか?
0479nobodyさん
2009/09/30(水) 15:25:41ID:???試してないから間違ってたらsry
preg_match("/<ul><li>(.*?)<\/li><\/ul>/sm",$html,$array);
0480nobodyさん
2009/09/30(水) 15:26:58ID:6H2Mywyh返り値に負の値が出るのはなんでだろうorz
0481nobodyさん
2009/09/30(水) 15:32:27ID:???いくらs付けてもそれじゃ無理だろ
君のパターンでは<ul>と<li>の間に改行がこないパターンになってるんだから
<?php
$html ="
<ul>
<li>リストです</li>
</ul>
";
preg_match("!<ul>.*<li>(.*?)</li>.*</ul>!s",$html,$array);
print_r($array);
?>
0482nobodyさん
2009/09/30(水) 15:33:27ID:i3D4XUwa\n*
0483nobodyさん
2009/09/30(水) 15:34:12ID:???preg_match("|<ul>.*?<li>(.+?)</li>.*?</ul>|ms",$html,$array);
0484nobodyさん
2009/09/30(水) 15:39:32ID:???0485478
2009/09/30(水) 15:50:44ID:erJ6uHWWみなさんありがとうございます。上手くできました。
/を|にして、ulとliに.*を入れれば良いんですね。
勉強になりました。
0486nobodyさん
2009/09/30(水) 16:49:42ID:???デリミタに|は使わないほうがいいよ
#とか!とか&とかそういうほとんど使わないものをデリミタにしな
0487nobodyさん
2009/09/30(水) 17:21:38ID:???0488474
2009/09/30(水) 17:26:12ID:PdAV1SS2!!
index.phpからprint $mfl;としても真っ白な理由が分かった・・・
ような気がします。ありがとうございます。
どうやってもダメなので考え方変えました・・・フラグ立てずにアク禁だけの
ルーチンとリンク用ルーチンに分けることにしました。
スレタイ通りに超くだらない質問を最後に。
ページにアクセスした時にユーザーエージェントごとに違う内容を
100回ループで出力する時、
(1)ヘッダ付近でエージェントを取得してFフラグを立てておき、
ループの所でtrue or falseで出力
(2)ループの所でエージェントを取得してtrue or falseで出力
やはり(2)が効率悪いですか?
ホスト名取得だと負荷がかかるとかなんとか聞き覚えがありますが・・・
0491nobodyさん
2009/09/30(水) 17:49:19ID:???UAの取得って$_SERVER["HTTP_USER_AGENT"] 見るだけでしょ?
既に変数として定義されているんだから、フラグ用の変数を見るのと大差無い。
0492nobodyさん
2009/09/30(水) 18:01:48ID:2VTuEGW2【PHPのバージョン】php5
【連携ソフトウェア】?
【質問内容】 質問させて頂きます。
現在ウェブサイトを制作しており、cgiを弄っています。
そこで、何度やってもエラーが出るのですが
ご教授お願い致します。
print "Content-type: text/html\n\n";
↑たとえばこういうのだとまったく問題ないです。(当たり前ですが)
print "<!--[if IE 6]>\n";
print "<![endif]-->\n";
↑こういうのがうまくいきません。
多分!や--が悪いと思うのですが・・・
どうすれば<!--[if IE 6]>をprint出来るのでしょうか?
ものすごく初歩的なことだと思うのですが、
検索しても全然それらしいものが出なかったので
どなたかご回答をお願い致します。
0493nobodyさん
2009/09/30(水) 18:06:33ID:i3D4XUwaが正しい。うしろにも前にも--
0494nobodyさん
2009/09/30(水) 18:13:40ID:???>>493は何か勘違いしてるのでスルーするとして
コメントだから単にブラウザ表示されてないだけ
ブラウザのHTMLソースを見ればちゃんと出力されてるよ
あとPHPはWebアプリケーション専用に開発されてるのでPerlのように
print "Content-type: text/html\n\n";
みたいのは不要
0495494
2009/09/30(水) 18:21:21ID:???HTMLで<>を実体参照に置き換えるのと同じ要領でやればいい
0496nobodyさん
2009/09/30(水) 18:23:38ID:???PHPはデフォルトでHTMLとして出力するのでContent-typeとかは書かなくていい。
これを拡張子phpで保存して動かしてみるといい
--
<h1>
<?php
echo "Hello world";
?>
</h1>
--
明示的にContent-typeを変えたい場合は
header('Content-Type: text/plain');
こんな感じで。
0498nobodyさん
2009/09/30(水) 18:56:32ID:???(a-z|0-9)こういうパターンの時に困るだろ
0499nobodyさん
2009/09/30(水) 19:04:05ID:2VTuEGW2迅速な回答ありがとうございます。
ブラウザ上で表示されていないのは分かるのですが、
internal server errorがでるのでソースを見ることすら出来なかったのです。
あとprint "Content-type: text/html\n\n"; は不要とのアドバイス
ありがとうございます。
文字列として出力するのもやりたかったので
ご回答嬉しいです。ありがとうございます!
とりあえず実態参照って何か分からないのでググってみます。
ご回答ありがとうございました!
>>496
こちらも迅速な回答ありがとうございます。
今編集しているのは、拡張子が.cgiというファイルです。
0500nobodyさん
2009/09/30(水) 19:17:00ID:???0502nobodyさん
2009/09/30(水) 19:37:46ID:???0503nobodyさん
2009/09/30(水) 21:46:51ID:AbgTvS5i【PHPのバージョン】xampp-win32-1.7.2に入っているバージョンで多分最新だと思います。
【連携ソフトウェア】なし。
【質問内容】
http://www.navit-tokubai.jp/tenpo.asp?ShopID=1658
ここにアクセスして、『ピーコック』『目白店』のみの文字列を抽出し表示させるソースを教えて下さい。
よろしくお願いします。
0504503
2009/09/30(水) 21:51:27ID:AbgTvS5i$url = "http://www.navit-tokubai.jp/tenpo.asp?ShopID=1658";
$thread = file_get_contents($url);
mb_ereg("会社名</td>\r\n <td width=\"70%\" class=\"tenpo003\">\r\n (\W)", $thread, $matches);
print_r($matches);
ここまで、自分でやったんですけど、うまくいかないんです。
0505nobodyさん
2009/09/30(水) 21:57:14ID:???0506503
2009/09/30(水) 22:37:15ID:AbgTvS5iはい。 それは↓の実験で確認出来てます。
問題は、正規表現とか検索の関数の使い方がわかんないんです。
<?php
$url = "http://www.navit-tokubai.jp/tenpo.asp?ShopID=1658";
$thread = file_get_contents($url); // スレッドの全読み込み
$fp = @fopen("保存.txt", "w");
fwrite($fp, $thread);
fclose($fp);
0507nobodyさん
2009/09/30(水) 22:41:00ID:???正規表現で1発で抜き出せるとは思うけど自分は苦手なのでこれが精一杯
$list = file("http://www.navit-tokubai.jp/tenpo.asp?ShopID=1658");
$a = array();
for ($i = 0; $i < count($list); $i++) {
if (preg_match("/<td.*会社名.*?<\/td>/", $list[$i])) {
$a[] = trim($list[$i + 2]);
continue;
}
if (preg_match("/<td.*店舗名.*?<\/td>/", $list[$i])) {
$a[] = trim($list[$i + 2]);
break;
}
}
print_r($a);
0508nobodyさん
2009/09/30(水) 22:44:07ID:???$url = "http://www.navit-tokubai.jp/tenpo.asp?ShopID=1658";
$thread = file($url);
echo $thread[41];
echo $thread[48];
0510503
2009/09/30(水) 22:54:58ID:AbgTvS5iありがとうございます。しかし、
Parse error: syntax error, unexpected '@' in
というエラーが出ました。
> if (preg_match("/<td.*会社名.*?<\/td>/", $list[$i])) {
この行です。
0511nobodyさん
2009/09/30(水) 22:58:00ID:???コピペしただけじゃ動かない
スペースを消すか半角スペースかタブにおきかえてくれ
0512nobodyさん
2009/09/30(水) 23:02:17ID:3aUw1Dx6function hogeFunc($hoge1,hoge2){
if($hoge2==1){
$hoge1++;
}
return $hoge1;
}
上みたいな関数を実行するのに
hogeFunc(10); って感じに2つめの引数を指定しなくても動くわけですが
NULLでもいいから指定すべきなんでしょうか? hogeFunc(10,NULL);
糞質問ですみませんがお願いします
0513nobodyさん
2009/09/30(水) 23:03:34ID:???デフォルト値設定すれば出ないけど
0515503
2009/09/30(水) 23:05:25ID:AbgTvS5iどうもです。
>>511
おお、正しく動きました。
ご両人のソースをこれからじっくり分析しようと思います。
有り難うございました。
0516nobodyさん
2009/09/30(水) 23:07:32ID:3aUw1Dx6そうそう、その問題なんですよ
エラーがずらずらでてきて動いてるのになんで?ってのが始まりで。
「まあ動いてるから良いか」的に思ってたんですが良いわけないですね…
>>514
なるほど、そのデフォルト値の設定ってこういう状況のため(?)にあるんですね
ありがとうございました
0517nobodyさん
2009/09/30(水) 23:09:26ID:???じゃあ、引数消せよと
0518nobodyさん
2009/09/30(水) 23:12:39ID:3aUw1Dx6ほんとうにありがとう
0519nobodyさん
2009/09/30(水) 23:38:17ID:???0520503
2009/10/01(木) 05:49:02ID:ZppROofQfor ($page = 80; $page < 10000 ; $page++) {
echo $page;
echo "\r\n";
$url = "http://www.navit-tokubai.jp/tenpo.asp?ShopID=";
$url .=$page;
$thread = file($url);
if (preg_match("/.*東京都.*?/",$thread[62]))
{
$WriteData=$page;
$WriteData.=",";
$WriteData.=mb_ereg_replace("\r\n","",mb_ereg_replace(" ","",$thread[41]));
$WriteData.=",";
$WriteData.=mb_ereg_replace("\r\n","",mb_ereg_replace(" ","",$thread[48]));
$WriteData.=",";
$WriteData.=mb_ereg_replace("\r\n","",mb_ereg_replace(" ","",$thread[62]));
echo $WriteData;
$WriteData2.=$WriteData;
$WriteData2.="\r\n";
};
}
$fp = fopen("スーパー.txt", "w");
fwrite($fp,$WriteData2);
fclose($fp);
こんな感じで東京都にあるスーパーの住所録を全部抜いてやろと思ったのですが、↓みたいに途中で止まってしまいます。
これって、相手のサーバーが規制をかけた、ってことでしょうか?
0521503
2009/10/01(木) 05:50:36ID:ZppROofQ91 91,イトーヨーカ堂,三ノ輪店,東京都荒川区南千住1-9-192 92,イトーヨーカ堂,ザ・プライス西新井店,東京都足立区興野1-12-793 93,イトーヨーカ堂,高砂店,東京都葛飾区高砂3-12-594 94,イトーヨーカ堂,上板橋店,東京都板橋区常盤台4-26-195
96 96,イトーヨーカ堂,金町店,東京都葛飾区東金町1-10-897 97,イトーヨーカ堂,東村山店,東京都東村山市本町2-2-1998 98,イトーヨーカ堂,府中店,東京都府中市本町1-13-399 99,イトーヨーカ堂,竹の塚店,東京都足立区竹の塚5-17-1100
101 101,イトーヨーカ堂,武蔵境店,東京都武蔵野市境南町2-2-20102 102,イトーヨーカ堂,ザ・プライス滝山店,東京都東久留米市滝山4-13-10103 103,イトーヨーカ堂,小岩店,東京都江戸川区西小岩1-24-1
104 104,イトーヨーカ堂,多摩センター店,東京都多摩市落合1-44105 105,イトーヨーカ堂,綾瀬店,東京都足立区綾瀬3-4-25106 106,イトーヨーカ堂,エスパ昭島店,東京都昭島市田中町562-1107 107,イトーヨーカ堂,四つ木店,東京都葛飾区四つ木2-21-1
108 108,イトーヨーカ堂,東久留米店,東京都東久留米市本町3-8-1109 110 110,イトーヨーカ堂,赤羽店,東京都北区赤羽西1-7-1111 111,イトーヨーカ堂,亀有駅前店,東京都葛飾区亀有3-26-1112 112,イトーヨーカ堂,恋ヶ窪店,東京都国分寺市東恋ヶ窪5-6-3
113 113,イトーヨーカ堂,大井町店,東京都品川区大井1-3-6114 114,イトーヨーカ堂,南大沢店,東京都八王子市南大沢2-28-1115 115,イトーヨーカ堂,八王子店,東京都八王子市狭間町1462-1116 116,イトーヨーカ堂,葛西店,東京都江戸川区東葛西9-3-3
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\xampp\akkun\baka002.php on line 10
0522nobodyさん
2009/10/01(木) 05:55:23ID:???Fatal error: Maximum execution time of 60 seconds exceeded
を機械翻訳でもしてみろw
ttp://honyaku.yahoo.co.jp/transtext
0524503
2009/10/01(木) 06:01:53ID:ZppROofQ機械翻訳したところ、
『上回られる60秒の最大の実行時間』
だそうですが、これはどういう意味でしょうか?
PHPの実行時間が60秒を越えたらダメとか?
0525503
2009/10/01(木) 06:04:45ID:ZppROofQなんか、設定をいじればいいとか?
つか、もう寝ます。
0526sage
2009/10/01(木) 09:29:22ID:XQ4QcZJw質問しといて勝手に寝るな
php.iniみとけや
0527nobodyさん
2009/10/01(木) 09:45:31ID:???0528nobodyさん
2009/10/01(木) 10:09:23ID:twwty8uPクラスわけとか、メソッドわけ?とか。
動くものは作れるし、それなりに勉強してるつもりなんですが、
いまいち自信もてないので・・・
0529nobodyさん
2009/10/01(木) 10:29:38ID:???他人のコードを読む、でもある程度勉強になるが、優れたコードは読みやすいので良さに気づかずに何気なくスルーしてしまう事が多い。
本で勉強するなら、PHPの本ではなく、OOPの本を読む時期に来ていると思う。
このスレは書かれるコードが断片的すぎて設計レベルの勉強には向かない。
0530nobodyさん
2009/10/01(木) 10:32:54ID:???0531nobodyさん
2009/10/01(木) 10:36:26ID:twwty8uPレスどうもです。
ちゃんと指摘してくれそうなうな人が回りにいないんですよね・・・(^^;
OOPの本でいいの知ってたら教えてください
0533529
2009/10/01(木) 11:22:34ID:???『リファクタリング』
『デザイン・パターン』
『コード・コンプリート』
『達人プログラマー』
上から順に、でいいかな。多分値段順、明日から使える順に並んでる。
『デザイン・パターン』は類書でもいいし、webでもいい。結城さんの本とか。
0534nobodyさん
2009/10/01(木) 11:24:52ID:twwty8uPありがとうございます。
0535nobodyさん
2009/10/01(木) 11:30:48ID:qQSI8C4c動的URLを静的URLにしたいです。
下記の場合のRewriteRuleの書き方を教えてください。
↓を試してみたら、2行目が優先されてしまい、1行目が対応できませんでした。
RewriteRule ^([^/]+)/([^/]+)_([^/]+)/$ view.php?q=$1&mode=$2&pref=$3
RewriteRule ^([^/]+)/([^/]+)_([^/]+)/$ view.php?q=$1&mode=$2&city=$3
http://sample.jp/v.php&q=tokyo&mode=pref&pref=q0001
↓
http://sample.jp/tokyo/pref_q0001/
http://sample.jp/v.php&q=daiba&mode=city&city=z0001
↓
http://sample.jp/daiba/city_z0001/
0536nobodyさん
2009/10/01(木) 11:41:38ID:???とにかく説明が下手糞
0539nobodyさん
2009/10/01(木) 12:25:15ID:???RewriteRule ^([^/]+)/city_([^/]+)/$ view.php?q=$1&mode=city&city=$2
0540nobodyさん
2009/10/01(木) 12:26:30ID:???RewriteRule ^([^/]+)/([^/]+)_([^/]+)/$ view.php?q=$1&mode=$2&$2=$3
0541nobodyさん
2009/10/01(木) 13:48:26ID:9PvgZ/Pgphp.iniの設定はどうするの?
サイトごとに別々に用意して読み込ませるとか出来るもの?
0542nobodyさん
2009/10/01(木) 14:08:55ID:qQSI8C4c0543nobodyさん
2009/10/01(木) 14:36:36ID:twwty8uP共通のを使って、違うところはそれぞれのvhostの中で独自定義したりする
0544503
2009/10/01(木) 14:40:00ID:ZppROofQmax_execution_time = 60
を書き換えても、全然かわらないから、
ソース内に
set_time_limit(0);
を書いたらうまく行きました。
どうもでした。
0545nobodyさん
2009/10/01(木) 14:41:46ID:/dzREAM4>>543
レンサバで、そういうのいじれない場合はどうすればいいでしょうか。
0546nobodyさん
2009/10/01(木) 14:55:09ID:???いじれないことないと思うが。
普通ディレクトリ内にphp.iniを置けば認識する場合が多い。
でなければPHPスクリプト内で代用できるコマンドがあると思うけど。
上のset_time_limitみたいに
0547nobodyさん
2009/10/01(木) 15:01:25ID:9PvgZ/Pgなるほどー
凄く勉強になりました。ありがとう
0548nobodyさん
2009/10/01(木) 15:02:24ID:v/9aEp650549nobodyさん
2009/10/01(木) 15:04:07ID:???変更できるパラメータはini_setで変更
変更できるかどうかはマニュアルの「変更の可否」を参照
http://jp2.php.net/manual/ja/ini.list.php
0550nobodyさん
2009/10/01(木) 15:06:17ID:???ただし設定ファイルを上書きしてしまわないよう注意
システム的にはこれでアップデートは完了だが
新しい機能を有効にしたい場合は当然設定しなおさないとだめ
0551nobodyさん
2009/10/01(木) 20:19:36ID:PoVmDbv70552nobodyさん
2009/10/01(木) 20:32:26ID:hYnFYsU30553湯ノ口
2009/10/01(木) 20:39:02ID:???.htaccessで教えて頂ければ助かります。
pcからmbにアクセスしたら、こちらはmb専用ページですと表示したいです。
その逆(mbからpcサイト)も教えて頂ければ助かります。
あとseoの事を考えると検索ロボットのipを全部許可したいんです。
これも教えて頂ければ非常に助かります。
もっと簡単でいい方法があればそれでも結構です。
以上宜しくお願いします。
0554nobodyさん
2009/10/01(木) 20:40:06ID:???0555nobodyさん
2009/10/01(木) 20:40:09ID:hYnFYsU3の「例1 例外クラスを構築する」なんですけど、なにもコメントアウトしないとHTTP 500 Internal Server Errorが出ます。
それで、下半分をコメントアウトすると
Fatal error: Cannot redeclare class Exception in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\extended_exception01.php on line 7
が出ます(長いので次レス参照のこと)。
下半分をコメントアウトしたまま、クラス名をMyExceptionにすると、真っ白な画面ですが通ります。
これってクラス名は本当にExceptionのままでいいんですか?
それとコメントアウトせずに通すにはどうしたらいいんですか?
0556555
2009/10/01(木) 20:41:14ID:hYnFYsU3error_reporting(-1);
ini_set('display_errors', 'On');
ini_set('log_errors', 'On');
class Exception
{
protected $message = 'Unknown exception'; // exception message
private $string; // __toString cache
protected $code = 0; // user defined exception code
protected $file; // source filename of exception
protected $line; // source line of exception
private $trace; // backtrace
private $previous; // previous exception if nested exception
/*
public function __construct($message = null, $code = 0, Exception $previous = null);
final private function __clone(); // Inhibits cloning of exceptions.
final public function getMessage(); // message of exception
final public function getCode(); // code of exception
final public function getFile(); // source filename
final public function getLine(); // source line
final public function getTrace(); // an array of the backtrace()
final public function getPrevious(); // previous exception
final public function getTraceAsString(); // formatted string of trace
*/
/* Overrideable */
// public function __toString(); // formatted string for display
}
?>
0558555
2009/10/01(木) 20:53:49ID:hYnFYsU3ありがとうございます。
ちなみに質問する前に例2も一緒にコピペしてみたんですけどダメでした。
しかも、困ったことに下半分をコメントアウトしない限りエラーメッセージも出ないんですよね。
cloneはfinalにしてあってcloneできないようにしてありますよね。
しかも、どこからも呼ばれていません。
ですからE_FATAL エラーの発生ではないですね。
Exceptionクラスのみでさえエラーが出るんですから
それ以上足しても・・・と思うんですけどどうですか?
0559nobodyさん
2009/10/01(木) 20:57:35ID:???0560555
2009/10/01(木) 21:01:20ID:hYnFYsU3読んで分からないから質問しているんです。
マニュアル読んだだけですべて理解できるならこの質問スレの意義すらないでしょう。
せめてヒントをください。あなたのレスでは抽象的過ぎて分かりません。
0561nobodyさん
2009/10/01(木) 21:15:34ID:???激しくうざい存在
0563555
2009/10/01(木) 21:24:20ID:hYnFYsU3激同です
(出来ればIDを晒して文句を言っていただけると幸いです、自演と思われるとアレですので…)。
前回質問したときも、まったく的外れだったことがあります。
>>562
こっちだって出来るだけのことは調べて質問しているんです。
あなたが教える気がないのは分かりましたのでお引取りください。
代わりに他の回答者の方、お願いします。
0564nobodyさん
2009/10/01(木) 21:31:31ID:???じゃ六法全書も読めばすぐに弁護士になれるよな?
http://www.ron.gr.jp/law/
マニュアルがあればこの世の問題はすべて解決
・・・って馬鹿じゃね?
0566555
2009/10/01(木) 22:03:39ID:hYnFYsU3自演乙です
0567nobodyさん
2009/10/01(木) 22:07:27ID:???答えが出てくるまで黙ってろボケ
0568nobodyさん
2009/10/01(木) 22:15:15ID:???本家PHPサイトの和訳を教えていただけませんか?
英語辞書あるから完璧ですよね
和訳を俺に伝授してくれませんか?^^
0569nobodyさん
2009/10/01(木) 22:18:51ID:???// 例2
try {
$o = new TestException(TestException::THROW_DEFAULT);
} catch (MyException $e) { // この型にはマッチしない
echo "Caught my exception\n", $e;
$e->customFunction();
} catch (Exception $e) { // キャッチされる
echo "Caught Default Exception\n", $e;
}
これだけためして
ちゃんとExceptionしてくれてるよ
0570555
2009/10/01(木) 22:42:33ID:hYnFYsU3ありがとうございます。
今、「例2 例外クラスを拡張する」のみを試したら、実行できました。
その中の「例1」「例2」「例3」「例4」も含めていますが、実行できます。
ということは、「例1 例外クラスを構築する」は元々既にPHPに組み込まれているクラスなのですか?
つまり、「例1 例外クラスを構築する」は「わざわざ打ち込んで実行する必要はない」という解釈で良いですか?
0571nobodyさん
2009/10/01(木) 22:44:17ID:BF5xnbImよかったですねまともな回答者にめぐり合えて。
>>562みたいな回答したいだけの香具師(知識はもちろん初心者レベルでしょうね)の事は気にしてはいけませんよ
0572nobodyさん
2009/10/01(木) 22:49:02ID:59iiS7vg>以下のメンバーおよびプロパティは、 組み込みの Exception クラスから派生した子クラスの中でアクセス可能です。
ってマニュアルに書いてあるでしょ?
解答示せと言うのもわかる。ググレで終わるのもどうかと思う。
だがそれに対して逆ギレするのもどうかと思うぞ。
>>1のテンプレ位読んでくれ
0573nobodyさん
2009/10/01(木) 22:56:26ID:???0574nobodyさん
2009/10/01(木) 23:00:50ID:???そのとおりだよ。
php5にもともと入ってるクラスを書きだしたのが例1
例2 例外クラスを拡張する の
class MyException extends Exception
の親クラスの中を見てみ
0575555
2009/10/01(木) 23:21:44ID:hYnFYsU3応援、ありがとうございます。
正直、今回のは納得いきませんでしたね。
中途半端に回答して煽るくらいなら回答要りませんよね。
>>572
>以下のメンバーおよびプロパティは、 組み込みの Exception クラスから派生した子クラスの中でアクセス可能です。
それは「分かっている人の、分かっている人による、分かっている人のための」説明文でしょう。
では、少し長いですが「法人税法」第23条第2項を読んでみましょう:
「法人(公益法人等及び人格のない社団等を除く。以下この条において同じ)の株主等である内国法人が当該法人から
次に掲げる金銭その他の資産の交付を受けた場合において、その金銭の額及び金銭以外の資産の価値の合計額が
その交付の起因となった当該法人の株式(出資等も含む)の帳簿価額を超えるときは、この法律の規定の適用については、
その超える部分の金額のうち、当該法人の資本等の金額から成る部分の金額以外の金額は、利益の配当又は剰余金の分配の額とみなす」
・・・こういう文章がすっと頭に入る人は、頭が良いというより、「少しおかしいのではないか」と思う。 by 野口悠紀雄
確かに、どう見ても良い説明文ではないですよね。今回の件はそれと同じ印象を受けました。
それに、一言言ってくれれば済んだ話じゃないですか?
僕だって今はこうやって理解しているんですし。
回答者に不備があればこれからも一質問者として指摘していくつもりです。
その代わり、正しい回答が得られればきちんと感謝の意を示すつもりです。
0576555
2009/10/01(木) 23:26:41ID:hYnFYsU3やはり、その通りでしたか。
実はエラーメッセージに「Exceptionが再度宣言された」とあったので
元のExceptionが既に宣言されているのではないかと察してはいました。
しかし、それならわざわざ例として出す必要もないと思っていましたし、
なんと言っても題名が「例1 例外クラスを構築する」でしたからね(それでMyExceptionにしてみた訳ですが)。
原文のように「例1 既に組み込まれている例外クラス(=Example #1 The Built in Exception class)」であれば理解できたはずです。
僕も将来、あなたのような回答者になれるように努力します。
今回は本当にありがとうございました!
■ このスレッドは過去ログ倉庫に格納されています