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

【PHP】下らねぇ質問はID出して書き込みやがれ 132

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2014/01/20(月) 06:23:11.66ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 131
http://kohada.2ch.net/test/read.cgi/php/1384065969/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.5
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
05525482014/03/11(火) 13:44:14.46ID:knsPq3qu
私も出力時のみと思っていたのですが入れる前にするのが常識みたいに言ってきたもので、私のほうがおかしいのかと思ってしまっておりました。

エスケープする場所を移動させるだけと思っているようで、事前にエスケープすると入れる情報の長さもかわることになるので
設計部分から見直す必要性があることもわかっていないようで困っておりました。
0553nobodyさん2014/03/11(火) 13:51:15.27ID:???
>>552
そいつがプロなら殴っとけ
0554nobodyさん2014/03/11(火) 13:55:46.79ID:???
使う用途次第で、HTMLをHTMLエンティティに変換して出力する用途が決まっていれば
データベースを別のコードでも使うときなどのために変換済みをいれておいたほうがいいことがある。
0555nobodyさん2014/03/11(火) 14:04:17.06ID:???
>データベースに入れる際にhtmlspecialcharsするべきと

むしろ、こっちの理由を聞いてみたい。
その他人とやらにおいて、何か合理的な理由があるのだろうか。
0556nobodyさん2014/03/11(火) 14:07:00.88ID:???
取り出したデータが無加工でそのまま使えることを保証するためだろ。
0557nobodyさん2014/03/11(火) 14:10:44.28ID:???
>>556
そんな保証が必要なの?
出力先がHTMLに確実に限られていればわからなくはないが
0558nobodyさん2014/03/11(火) 14:15:02.96ID:???
つねに、出力でhtmlspecialcharsをやるなら、ほぼHTMLだろう。
バイナリデータなどでやったらデータが破壊される。
0559nobodyさん2014/03/11(火) 14:18:17.78ID:???
>>558
「つねに」やるってどこか書いてる?
0560nobodyさん2014/03/11(火) 14:19:24.04ID:???
> 現在は出力時にhtmlspecialcharsでエスケープしていますが、データベースに入れる際にhtmlspecialcharsするべきと他の人から言われています。
0561nobodyさん2014/03/11(火) 14:20:25.47ID:???
保存時はなるべく生データの方が融通聞いていいと思うけどね
0562nobodyさん2014/03/11(火) 14:20:56.79ID:???
DBに保存されるのは無加工の生のデータであるべきである
なぜならhttp経由のみで使うとは限らないからである
htmlspecialcharsを入れとけばエスケープ忘れがあっても安全という主張があるが
html出力時にDBから取り出したデータにhtmlspecialcharsを挟むという
PHPのデファクトスタンダードが通用せず第三者からみたらとても不思議で一見まずいコードに見える
このような不思議な仕様にすべきでない
0563nobodyさん2014/03/11(火) 14:24:37.63ID:???
HTML以外が入るときのために、変換済みのほうがいいだろ。
バイナリデータに対して出力で変換したら壊れる。
0564nobodyさん2014/03/11(火) 14:27:32.76ID:???
>>563
アホなこといってんじゃないよ
バイナリデータにhtmlspecialcharsなんて使うわけないだろ
つうか画像ならGDとかに突っ込んだり
そのまま出力するにしてもヘッダで指定すんだろ
プレーンテキストとは扱いが違う
0565nobodyさん2014/03/11(火) 14:33:13.69ID:???
DBに入れる際にhtmlspecialcharsすると、出力時にもhtmlspecialcharsをして、
二重にエスケープされる可能性があるから、まずいんだよね。

たとえば、'&' (アンパサンド) は '&' に変換される。
これをもう一度エスケープすると、 '&'になって、
'amp;'という不要な文字がブラウザに表示されてしまう。
0566nobodyさん2014/03/11(火) 14:34:37.26ID:???
出力先にあわせて、適切な処理を行うという常識を無視し
XSS等がおきた時の責任逃れをしたいっていう感覚をヒシヒシと感じる
0567nobodyさん2014/03/11(火) 14:34:57.80ID:???
htmlならバイナリデータなんてDBに突っ込まないで
場所だけを記しておくよな
0568nobodyさん2014/03/11(火) 14:40:07.10ID:???
htmlspecialcharsは不可逆変換だしね。

< と &lt; は、 double_encodeの設定で  &lt; &lt; もしくは &lt; &amp;lt; のどちらかになるにせよ
htmlspecialchars_decode すると < と < になってしまう。
0569nobodyさん2014/03/11(火) 14:53:05.09ID:???
>>548
sanitized_text ってカラム名にしてそこに「も」入れるのが、その、他の人との折衷案になるんでない?
「も」としたのは生データは重要だから失うわけにはいかないという理由。
0570nobodyさん2014/03/11(火) 18:15:58.54ID:???
何この流れw
馬鹿だなぁw

DB格納時やらバイナリデータにh()を適用ってw
特にバイナリデータにはウケたw
0571nobodyさん2014/03/11(火) 20:48:31.32ID:???
DBいれる前に不可逆変換すると仕様変更や拡張、
リニューアルの時とかネックになりがちだしなー。
基本は、あくまで「渡す時に適切な処理を」だろ。
あくまで基本だけど。

ところで、なんでhtml文章を格納するのに話題で
バイナリにhtmlspecialcharsとか言い出してる馬鹿がいるの?
0572nobodyさん2014/03/11(火) 20:50:47.99ID:???
データベースにHTMLとバイナリが混合していて、
それを見分ける方法などを付けていなければ
バイナリに対して加工してしまう可能性がある。
0573nobodyさん2014/03/11(火) 20:53:31.02ID:???
>>572
バイナリをHTML自体、またはその一部として出力するの??
0574nobodyさん2014/03/11(火) 20:55:11.10ID:???
>>572
DBとSQLは1対1で作るんじゃないの?
どこに何が入ってるか分からないものと戦うの?
0575nobodyさん2014/03/11(火) 21:12:59.37ID:???
>>572
見分ける方法が無いまま混在させる状況がよく分からん。
よしんば入れるとして、バイナリが入る可能性があるのなら一律エスケープしないだろ。
0576nobodyさん2014/03/11(火) 21:30:10.60ID:???
自分で設計しといてimage BLOBとtext CHARの区別もつかない開発者とかねーわwww
0577nobodyさん2014/03/11(火) 21:31:59.48ID:???
>>576
×区別もつかない
○区別をつけない
0578nobodyさん2014/03/11(火) 21:34:42.14ID:???
>>577
自レス?
0579nobodyさん2014/03/11(火) 21:48:20.79ID:???
俺なら出力するときだけだな。DBに入れるのは生データのほうが何かと融通が利く。
0580nobodyさん2014/03/11(火) 22:09:58.62ID:???
他人が設計して共同開発するようなものても
取得するデータがどのようなものかはあらかじめ把握しているのが普通
じゃなきゃアプリケーションなんて作れません
0581nobodyさん2014/03/11(火) 22:13:56.35ID:???
      r ‐、
      | ○ |         r‐‐、
     _,;ト - イ、      ∧l☆│∧  良い子の諸君!
    (⌒`    ⌒ヽ   /,、,,ト.-イ/,、 l  入力と検証と保存と出力の話が混ぜこぜになっているが
    |ヽ  ~~⌒γ⌒) r'⌒ `!´ `⌒)  回答する側も初心者だ
   │ ヽー―'^ー-' ( ⌒γ⌒~~ /|  騙されるな。
   │  〉    |│  |`ー^ー― r' |
   │ /───| |  |/ |  l  ト、 |
   |  irー-、 ー ,} |    /     i
   | /   `X´ ヽ    /   入  |
0582nobodyさん2014/03/11(火) 22:15:16.23ID:???
話がうつってるだけなのについてこれないからってクソみたいなAA貼るなカス
0583nobodyさん2014/03/11(火) 22:21:21.67ID:???
まあ、DBへの入力時にhtmlspecialcharsするくらいなら、
投稿入力文字列をチェックして、タグ'<>'の投稿を禁止するとか、
入力値チェックの段階で対応する方がよさそう。
0584nobodyさん2014/03/12(水) 10:33:14.69ID:???
>>572
> ところで、なんでhtml文章を格納するのに話題で
> バイナリにhtmlspecialcharsとか言い出してる馬鹿がいるの?

>>583
それも手の一つであるけど、仕様決めのときの
ポリシーの問題であってレイヤーが違いすぎるだろ。
それ言い出すと、WAFいれたらとかそういう話も出てくる。
そも、XSS対策を意図した場合、PHPレベルで解決不可能じゃないだけに
そっちを先に論ずるのも妙だと思われる。
0585nobodyさん2014/03/13(木) 05:39:10.94ID:???
ム板にID入って荒らせなくなったぺちぱー涙目
0586nobodyさん2014/03/13(木) 06:13:09.69ID:???
おおお、ID出るようになったのか。久々にム板いこっと
0587nobodyさん2014/03/13(木) 07:53:48.71ID:???
誰にも相手にされない煽り()
0588nobodyさん2014/03/13(木) 13:11:40.14ID:???
ぎいやぁぁぁぁぁぁぁぁぁぁぁ!
しまった!
大変な失敗をしてしまった!!
もう俺の人生終わりだァァァ!!
0589nobodyさん2014/03/13(木) 13:12:23.06ID:???
始まってすらない
0590nobodyさん2014/03/13(木) 13:17:37.89ID:???
こっちもID出てくれたらな
0591nobodyさん2014/03/13(木) 13:21:29.15ID:???
お疲れ様でした。次の周では頑張ってください
0592nobodyさん2014/03/13(木) 14:47:34.75ID:???
>>589
お前は始まることすらないがなw
0593nobodyさん2014/03/13(木) 19:11:56.06ID:QK76W5wi
ぺちぱーには無理
0594nobodyさん2014/03/13(木) 21:48:52.35ID:???
>>585
どこが荒らされてたの?みてみたい
0595nobodyさん2014/03/13(木) 21:55:50.20ID:???
被害妄想こじらせて見えない敵と戦ってるんだからそうっとしといてやれ
0596nobodyさん2014/03/13(木) 23:42:40.32ID:???
PHPユーザが荒らしてることにしないと困る人キテター
0597nobodyさん2014/03/13(木) 23:53:19.72ID:???
PHP「すら」使えんアフォ荒しは消えればいいのにな
0598nobodyさん2014/03/14(金) 06:41:17.54ID:???
PHPは誰でも使えるくらい簡単だが
作るシステムの適正に合ったコードが書ける人間は意外と多くない
0599nobodyさん2014/03/15(土) 09:39:37.71ID:B7D/HL0C
すいません、教えてください。

GDを使ってpng画像を作成するプログラムを作っています。
画像を作成して表示することはできたのですが、
右クリックして「画像を保存」しようとすると、うまく保存してくれません。
保存できるようにする方法はありますでしょうか?
0600nobodyさん2014/03/15(土) 10:00:00.04ID:???
表示出来たらそれ以降はブラウザの問題でしょ
拡張子によって保存出来ないとか?拡張子.pngにしてみたら
0601nobodyさん2014/03/15(土) 10:18:54.27ID:B7D/HL0C
保存しようとすると、拡張子が*.phpになり、うまく保存できませんでした。

ただ、ご指摘いただいた点にヒントを得て、いろいろためしてみたところ、うまくいく場合といかない場合がありました。
IEの場合、デフォルトでpng保存となり、保存した画像を開いたところちゃんと表示されました。
chromeの場合、デフォルトではphp保存となっており、拡張子をpngに変えればうまく保存できました。
ただ、phpのまま保存すると、うまくいきませんでした。
これをpng形式で保存するように事前に指定できればいいのですが・・・
そう考えると、たしかにブラウザの問題となりますね。
0602nobodyさん2014/03/15(土) 11:06:02.04ID:???
>>601
>ただ、phpのまま保存すると、うまくいきませんでした。
拡張子がphpになっているだけで、pngとして保存できているはずだよ

鯖側では、Content-Dispositionを使ってfilenameをつけるのがベターかと
0603nobodyさん2014/03/15(土) 11:11:55.23ID:???
>>601
下の手法を応用して、拡張子pngに適用するのはどうかな。

PHP拡張子としてHTML型を使用する
# 全てのPHPコードをHTMLのように作成する
AddType application/x-httpd-php .htm .html

http://www.php.net/manual/ja/security.hiding.php
0604nobodyさん2014/03/15(土) 12:50:50.87ID:/0KFEDAU
<?=$hoge ?>で$hogeの内容を出力すると思われる
ソースがあるんですがこれを有効にする方法が分かりません。
「php はてなイコール」「php クエスチョンイコール」
でググってもダメでした。

教えて下さい><
0605nobodyさん2014/03/15(土) 12:53:04.27ID:???
いや、デフォルトで有効だし・・・むしろ無効にする方法を知らないわ
0606nobodyさん2014/03/15(土) 12:59:11.19ID:???
「php ショートタグ」
0607nobodyさん2014/03/15(土) 14:28:12.69ID:???
>>605
有効にしてんのかよw
0608nobodyさん2014/03/15(土) 15:01:32.67ID:???
>>604
5.4以降使いな、いつでも有効だよ
0609nobodyさん2014/03/15(土) 15:32:56.48ID:???
ショートタグは、コーディング規約で非推奨なことが多いから
使わないほうがいいよ。
0610nobodyさん2014/03/15(土) 16:55:36.75ID:???
ローカルな掲示板の保守頼まれてスクリプト組んだんだけど画像認証がうまく突破できない
4桁の数字だから総当りでもいいんだけど、効率が悪い;
phpってまではわかったんだが、どうやってPOSTすれば認識されるんだろう?
SPAMの書き込みがあるから何とかなりそうなんだ
お前ら力を貸してくれ、ください
0611nobodyさん2014/03/15(土) 16:59:32.65ID:???
その掲示板に保守用のバックドアを作ってもらうぐらいしかない
画像認証の突破方法なんてSPAM屋さんを利するだけだから誰も教えてくれないよ
0612nobodyさん2014/03/15(土) 17:02:47.17ID:???
なぜ保守に画像認証突破が関係あるのか
0613nobodyさん2014/03/15(土) 17:16:54.30ID:???
というか何のスクリプト?
なんとなく、「それはそういうやり方でやるもんじゃない」という答えで終わりそうな話だけど
0614nobodyさん2014/03/15(土) 18:26:26.69ID:???
プログラム板の質問スレにも書いてなかった?君
やりたい事がまったくわからん
0615nobodyさん2014/03/15(土) 22:10:33.52ID:???
スパム投稿で保守するってことだろ
0616nobodyさん2014/03/15(土) 22:19:25.58ID:???
保守ってスレの保守かよ
こっち関係の板じゃ別の意味に取られるぞ
0617nobodyさん2014/03/16(日) 00:22:45.22ID:???
ああー、そういうことなのか。
なんで自動ポストって言葉を使わないかなぁ。
0618nobodyさん2014/03/16(日) 05:58:04.91ID:???
htmlプロトコルやheader()周りって、どんなのを、どの程度抑えたらいいですか?
0619nobodyさん2014/03/16(日) 12:23:22.71ID:???
>>618
>htmlプロトコル
httpな
httpは↓
https://www.ietf.org/rfc/rfc2616.txt
header関数は↓
http://www.php.net/manual/ja/function.header.php
抑えておいたらはずれは無いんじゃないかな
0620nobodyさん2014/03/16(日) 13:55:18.87ID:/7LU/Oeu
html://
0621nobodyさん2014/03/16(日) 19:05:47.95ID:???
あ、素で間違えた...。
Content-Disposition:、Cache-Control:
辺りの頻出するもの教えて欲しいなって
この辺って、どの程まで理解してPHPはじめたらいいのか助言欲しいのん
ApacheのディレクトティブやPosgreSQLの設定までキリがないお
0622nobodyさん2014/03/16(日) 19:17:58.72ID:l1xluNFW
複数のファイルを1つにするアーカイブ処理を行いたいのですが、
通常アーカイブ処理は元よりファイルサイズが小さくなる(圧縮される)と思いますが、
PHPで用意されてる関数群は何かしら設定が必要なようなので、
http://www.php.net/manual/ja/refs.compression.php
デフォルトで使える方法でアーカイブする方法を模索しています。
今考えてるのは、
file_get_contentsで読み込んでbase64_encodeしたものを、
その他情報とともに(ファイル名、親フォルダなど)テキストファイルに記述していく方法ですが、
この方法だと元のファイルより当然サイズが肥大化します。
アーカイブするのが主目的なので肥大化しても構わないと言ったら構わないのですが、
何か他にこの手の処理にデフォルトで使える有効そうな関数はありませんか?
zipアルゴリズムを実装するとか、フリーのそういう類のスクリプトを拾ってくるってのはなしでお願いします。
0623nobodyさん2014/03/16(日) 19:33:47.17ID:???
なんでデフォルトしかだめなの?
0624nobodyさん2014/03/16(日) 19:37:10.45ID:l1xluNFW
>>623
理由は特にありません
0625nobodyさん2014/03/16(日) 19:55:28.56ID:???
ないよ
06266012014/03/16(日) 20:45:09.55ID:WUHmbqmd
>>602
ありがとうございます。
遅ればせながら、お礼です。
Content-Disposition: inline; filename=
で問題解決しました。
0627nobodyさん2014/03/17(月) 09:22:00.38ID:???
>>622
exec で zip なり makecab 
0628nobodyさん2014/03/18(火) 12:27:27.37ID:???
亀レスだが、hhvmは言うほど早くない。
php 5.5 + 10%だな。
自分の環境のテストではそんな感じだった。
06296282014/03/18(火) 12:31:38.79ID:???
628ですが、亀レスの意味をわからず使ってしまいました。
申し訳ないです。
0630nobodyさん2014/03/18(火) 12:34:47.69ID:???
>>626
ついでにheader()しても先にレスポンスヘッダーにtext/html仕込まれたりするから、
ini_setでdefault_mimetypeを指定しておくと吉。
0631nobodyさん2014/03/18(火) 13:02:21.50ID:RFZn4Uk4
PHPによるオブジェクト指向プログラミングの学習法について質問です。
実践的なOOPを学習するにはどうしたらよいですか?
おすすめの学習法がありましたら教えて欲しいです。

PHPの入門書などを読むと、クラスの書き方には言及していますが、
実際にオブジェクトを使って何か成果物を作るようなものが少ないです。
文法的なことではなく、実践的なOOPを身に付けたいです。

クラスの書き方はある程度覚えたので、例えば、グローバルスコープで、
どうオブジェクトを扱うか等の知識を得たいです。
よろしくお願いします。
0632nobodyさん2014/03/18(火) 13:55:07.26ID:???
そりゃPHPで勉強するってのが無茶あるわ
0633nobodyさん2014/03/18(火) 14:50:00.57ID:ql50fOB4
データベースの検索結果をyieldで一件ずつ返すのは有りですか
0634nobodyさん2014/03/18(火) 15:06:37.74ID:???
>>631
そこの部分の一般例を覚えたいってこと?
それならば、クラス設計を突き詰めて学んだほうがいい気がする。
どうオブジェクトを扱うかは、結局クラス設計に依存するし、それ次第で変わるから。
そのあたりについて色々書いている人多いから、玉石混交だけど
色々読んでみるといいと思う。

で、課題作って実践する。

>>633
それ「自体」は無しじゃない。
0635nobodyさん2014/03/18(火) 15:37:26.95ID:???
>>633
カーソルをちゃんと使えな
06366312014/03/18(火) 15:51:26.19ID:RyBw1YMD
>>634
具体的には、掲示板でもブログでもアンケートでもいいのですが、
OOPに基づいて、WEBアプリを構築してみたいというものです。

書籍「パーフェクトPHP」で学習したところ、OOPでフレームワークの構築をするとか
敷居がかなり高かったので、入門的に、掲示板などをOOPで作る定番な手法を学習したいのです。

端的には、「クラスを書いたら、後はどうしたらいいの?」という疑問です。
auto_loadして、クラスを読み込んで、オブジェクトを作り、プロパティを設定、
そして、メソッドを実行という流れだと想像するのですが、
全体としては、どのようにコーディングするのか、お手本がなくよくわからないのです。
0637nobodyさん2014/03/18(火) 16:24:02.08ID:???
class 2chLikeBBS {
 private $db;
 function __construct() { $this->db = DB::instance()->get(); }
 function makeThread($_title, $_name, $_mail, $_body) {
  //transaction
  //INSERT INTO thread_tbl (title) VALUES ($_title)
  //INSERT INTO res_tbl (thread_id, name, mail, body) VALUES ($lastInsertId, $_name, $_mail, $_body)
  //commit
 }
 function getThreadTitle() {
 }
 function readThread($_threadId) {
 }
 function deleteThread($_threadId) }
 }
 function postResponse($_threadId, $_name, $_mail, $_body) {
 }
 function deleteResponse($_threadId, $_resId) {
  //UPDATE res_tbl SET name = 'あぼーん', mail = 'あぼーん', body = 'あぼーん' WHERE thread_id = $_threadId AND res_id = $_redId
 }
}

ど、どう?
06386312014/03/18(火) 16:52:00.21ID:RyBw1YMD
>>637
コードを示して頂きありがとうございます。
とても分かりやすいコードです。

このクラスを実際に利用するには、どうしたらよいのでしょうか?
グローバルスコープに次のようにすればよいのでしょうか?

<?php

require_once('DB.php');
require_once('2chLikeBBS.php');

$obj = new 2chLikeBBS();

//スレッド作成の場合
$obj->makeThread($_title, $_name, $_mail, $_body);

?>
0639nobodyさん2014/03/18(火) 16:59:31.16ID:???
requireしまくってもいいけどこっちが一般的
http://www.php.net/manual/ja/function.spl-autoload-register.php
0640nobodyさん2014/03/18(火) 17:08:45.44ID:???
俺は昔なにかあってautoloadやめて明示的にロードするようになった
まぁ勝手にロードとか型なしとかメリットでありデメリットでもあるからね
他人がコード読む際の可読性とか
0641nobodyさん2014/03/18(火) 17:19:26.69ID:???
>>633
使い勝手のためならお好きにどうぞ
メモリの使用量を抑えるためだったら
クライアントライブラリ側で結果セットをバッファリングしてないかも調べとこう
0642nobodyさん2014/03/18(火) 17:27:33.26ID:???
http://qiita.com/misogi@github/items/8d02f2eac9a91b4e6215
下のほうは実装例だから参考にしなくていいけど
上のほうにオートローダーの趣旨が書いてるから
>>639の説明がよくわからなかったら読んでみるといいかもしれぬ
06436312014/03/18(火) 17:29:03.73ID:RyBw1YMD
>>639
ありがとうございます。

このようにクラスを作成した場合、各メソッドごとに処理を記述します。
しかし、グローバルスコープでは、それらの一部のメソッドを使用するだけです。
この場合、使用しないメソッドも、全部を読み込んでいることになります。

クラスに10のメソッドが有る場合に、グローバルスコープで1つしかメソッドを
使わない場合には、効率が悪いように思えるのですが、
OOPでは普通のことなのでしょうか?
0644nobodyさん2014/03/18(火) 17:34:00.07ID:???
>>638
MVCを調べるといいかも
0645nobodyさん2014/03/18(火) 17:40:10.21ID:???
>>643
>>637はモデル
>>638はコントローラ
>>638でのコードはもっと多岐に渡るはずだぜ
作ったり消したり読み込んでビューを呼んで表示したり
0646nobodyさん2014/03/18(火) 17:47:58.92ID:???
>クラスに10のメソッドが有る場合に、グローバルスコープで1つしかメソッドを
>使わない場合には、効率が悪いように思えるのですが、
>OOPでは普通のことなのでしょうか?

クラスに属する振る舞い(メソッド)を定義してるだけ≒関数定義してるだけで
全く気にする必要はないですね
例えばmysqli apiで実際に使うメソッドなんてこの中の2割程度なのでは?
http://www.php.net/manual/ja/class.mysqli.php
06476312014/03/18(火) 18:18:38.57ID:RyBw1YMD
>>646
ありがとうございます。目から鱗です。
メソッドを定義しても実行しなければ、パフォーマンスに影響しないのですね。

これまで、PHPの入門書に従って、使う関数のみを読み込み、
その都度、関数を実行していました。
そのため、関数をそれぞれ別ファイルに保存する方法をとっていました。
OOPだと、その関数を一つのファイル(クラス)にまとめられるのですね。

>>644-645
OOPとMVC、そしてフレームワークは深い関係があるようなので、
もう一度、OOPでフレームワークの学習に挑戦してみます。
ありがとうございました。
06486342014/03/18(火) 18:54:20.68ID:???
PHPのモジュール化されているクラスや関数と
ユーザの作成するものじゃパフォーマンスに与える影響は一応違う。
モジュール化されたものは、シンタックスチェックとか入らないから。
ただまぁ、それだけぶっこんどいても実用上そこまで気にならないレベル。

MVCで、躓くところって大体決まってるのでその時はMVACも参考にしてみると面白いかも。

クラスに複数メソッドが〜の部分は、メソッドの書き方に強く依存するけど、
それらを効率的に書こうとすると結構privateメソッドが増えてくることに気付けると思う。
06496312014/03/18(火) 19:39:11.61ID:Dg0Vus48
>>648
ありがとうございます。
参考にさせて頂きます。
0650質問です。2014/03/18(火) 23:41:47.91ID:pDJRMjYx
次の方法でファイルを取ってきた時の
「接続先IPアドレス」と「HTTPリクエストヘッダ」を知る方法を教えてください。

$content = file_get_contents('http://example.com/hoge/fuga.html');

HTTPレスポンスヘッダなら $http_response_header で扱えますが、
その逆の、PHP側がリクエスト時に発行したリクエストヘッダを知りたいのです。
「GET /hoge/fuga.html HTTP/1.1」みたいなやつです。

また、この方法だと、DNSラウンドロビンで複数のサーバが立っていたら、
どのホストに接続したのかわからないと思います。
接続した先のIPアドレスを知る方法はあるでしょうか?

いちいちリクエストする前にURLを分解して
dns_get_record()でAレコードかAAAAレコードを記録してから
fsockopen()するしかないのでしょうか。

何か良い方法があれば教えてください(´・ω・`)
0651nobodyさん2014/03/19(水) 00:26:23.47ID:???
curl関数じゃいかんの?
http://www.php.net/manual/ja/ref.curl.php
0652nobodyさん2014/03/19(水) 02:31:42.34ID:???
ホスト名だけじゃ接続先のIPはHTTPじゃわからないんじゃない?

>いちいちリクエストする前にURLを分解して
>dns_get_record()でAレコードかAAAAレコードを記録してから
>fsockopen()するしかないのでしょうか。
接続先のIPを知る必要があるならやっぱ明示的に指定しないとだめだと思う
■ このスレッドは過去ログ倉庫に格納されています