PHPに関する質問スレです
前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 8
http://mevius.5ch.net/test/read.cgi/tech/1489506082/
次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
【PHP】下らねぇ質問はここに 9
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 538a-od5V)
2017/12/20(水) 18:00:20.28ID:1xaO/YRR0329デフォルトの名無しさん (ワッチョイ 5381-Xflc)
2018/08/05(日) 11:27:52.65ID:ekimy5CU0 まとめても数百行程度なら、性能上は変わらないと思うが
メンテナンスする上では、機能別に分けて置く方が楽かも
メンテナンスする上では、機能別に分けて置く方が楽かも
330デフォルトの名無しさん (ワッチョイ a35d-Xflc)
2018/08/05(日) 11:31:24.74ID:gTgyUF8y0 実体は別ファイルにしてエントリポイントからrouterで振り分ける
331デフォルトの名無しさん (ワッチョイ 6fd5-IwSV)
2018/08/05(日) 13:40:30.63ID:Klpi4erd0 バラした方が各スクリプトのサイズが小さいなら、物理的な読み取りとパースの分速くはなるんじゃね。
でもそんな細かいことよりメンテ性のいい方を選んだ方がいいんじゃないかな。
でもそんな細かいことよりメンテ性のいい方を選んだ方がいいんじゃないかな。
332デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/06(月) 10:30:49.64ID:933yDlcJ0 >>328
よく100万回ループ回した時の実行速度の差を比較したりする人がいるけど
ハッキリいってやるだけ時間の無駄
そんな事を気にするならそもそもPHPなんか使わない方がいい
webアプリのボトルネックというのは
大抵はDB周りだったりするわけで
そのボトルネックを正確に計測し解決する手段を身につける事が遥かに大事
というかそんな事を気にしてるって時点で
何かしらのフレームワークは使ってないんだろうけど
なぜ使わないの?
よく100万回ループ回した時の実行速度の差を比較したりする人がいるけど
ハッキリいってやるだけ時間の無駄
そんな事を気にするならそもそもPHPなんか使わない方がいい
webアプリのボトルネックというのは
大抵はDB周りだったりするわけで
そのボトルネックを正確に計測し解決する手段を身につける事が遥かに大事
というかそんな事を気にしてるって時点で
何かしらのフレームワークは使ってないんだろうけど
なぜ使わないの?
333デフォルトの名無しさん (ワッチョイ cf8a-9e/1)
2018/08/06(月) 11:23:57.83ID:zcUvwpke0334デフォルトの名無しさん (ワッチョイ 6fd5-IwSV)
2018/08/06(月) 12:20:51.12ID:ng9YxNhi0 PHPに関してフレームワーク使って良かったと思える場面て正直ほとんど無いな。
PHP自体がごった煮状態にしてまでいろいろできるようにしてある中で、フレームワークで実現しようとしている目標がいまいちわからん。
生産性にも得してるように思えないどころか、フレームワーク自体のメンテがだるい。
まあそれほどフレームワーク使ったわけでもなく、古くはSmarty、ちょっと前はCakePHP使ったくらいで、それも他所のベンダが作ったのを引き継いだくらいだから偏見に満ちてる可能性はある。
PHP自体がごった煮状態にしてまでいろいろできるようにしてある中で、フレームワークで実現しようとしている目標がいまいちわからん。
生産性にも得してるように思えないどころか、フレームワーク自体のメンテがだるい。
まあそれほどフレームワーク使ったわけでもなく、古くはSmarty、ちょっと前はCakePHP使ったくらいで、それも他所のベンダが作ったのを引き継いだくらいだから偏見に満ちてる可能性はある。
335デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/06(月) 12:22:54.58ID:933yDlcJ0 >>333
そか
フレームワークに頼らずに作るのも
DBに頼らずテキストベースで読み書きするのも
とても良い経験にはなるから頑張って
ただ○万回ループした時の実行時間の差を気にするなんてのは
本当にただの無駄でしかないから
コードの見通しの良さとか管理のしやすさとか
そっちを最優先で
root.php?mode=aaa ⇒ mode/aaa.phpを読む
root.php?mode=bbb ⇒ mode/bbb.phpを読む
root.php?mode=ccc ⇒ mode/ccc.phpを読む
なんて作り方もある
今これがベストだと思って設計しても
どうせ1年後にはもっと良い設計が閃くさ
だから色々と試してみるといい
そか
フレームワークに頼らずに作るのも
DBに頼らずテキストベースで読み書きするのも
とても良い経験にはなるから頑張って
ただ○万回ループした時の実行時間の差を気にするなんてのは
本当にただの無駄でしかないから
コードの見通しの良さとか管理のしやすさとか
そっちを最優先で
root.php?mode=aaa ⇒ mode/aaa.phpを読む
root.php?mode=bbb ⇒ mode/bbb.phpを読む
root.php?mode=ccc ⇒ mode/ccc.phpを読む
なんて作り方もある
今これがベストだと思って設計しても
どうせ1年後にはもっと良い設計が閃くさ
だから色々と試してみるといい
336デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/06(月) 12:33:44.81ID:933yDlcJ0 >>334
大規模開発をした経験がないとそうなるかもね
PHPはとてもいい加減な言語なんで
”正しく”書くにはかなりの知識と経験が必要
ネット上のPHPコードの多くが糞なのを見てもよく分かる
だから特定の規則さえ覚えれば”正しく”書ける
フレームワークってのは大規模開発では必須になる
あとは生産性の問題やね
スクリプト言語なんてものはいかに短時間で簡単にものを生産するかが鍵なので
個人開発であっても何かしらのフレームワークは使え
ってのが俺の意見
俺々マイクロフレームワークでもいいからさ
大規模開発をした経験がないとそうなるかもね
PHPはとてもいい加減な言語なんで
”正しく”書くにはかなりの知識と経験が必要
ネット上のPHPコードの多くが糞なのを見てもよく分かる
だから特定の規則さえ覚えれば”正しく”書ける
フレームワークってのは大規模開発では必須になる
あとは生産性の問題やね
スクリプト言語なんてものはいかに短時間で簡単にものを生産するかが鍵なので
個人開発であっても何かしらのフレームワークは使え
ってのが俺の意見
俺々マイクロフレームワークでもいいからさ
337デフォルトの名無しさん (ワッチョイ 5381-Xflc)
2018/08/06(月) 12:38:09.33ID:Xt7Beabr0 フレームワークの選択を誤ると、
数年後「まだそんなの使っているのか!」
ってエラーが頻発して苦労する
数年後「まだそんなの使っているのか!」
ってエラーが頻発して苦労する
338デフォルトの名無しさん (スププ Sd1f-j3zu)
2018/08/06(月) 12:48:26.08ID:UALza30Cd ネット上のソースのカオスさはPHPとJavaScriptが抜きん出てるよな
本ですら平気で間違った事を書いてるから
初心者ならこれを読めって本がなかなかない
if ($_POST['foo'] == 'var')
こんなコードを見ると目眩がする
>>337
それはあるな
ただ今はLaravel使っとけば間違いはないんじゃないかと
本ですら平気で間違った事を書いてるから
初心者ならこれを読めって本がなかなかない
if ($_POST['foo'] == 'var')
こんなコードを見ると目眩がする
>>337
それはあるな
ただ今はLaravel使っとけば間違いはないんじゃないかと
339デフォルトの名無しさん (ワッチョイ 6fd5-IwSV)
2018/08/06(月) 12:48:56.87ID:ng9YxNhi0 >>336
フレームワークを使うにしても、それをどう使うかは結局設計して周知しないといけないわけで、その手間ってフレームワーク使わない場合とそう変わらなくない?
むしろフレームワークが足かせになってそこから外れる部分をトリッキーに遠回りに書くことになったりのデメリットの方が目についてくる感じだ。
工数削減は俺々ライブラリでやれるし、それを周知する手間も前述の周知に比べて多大なわけでもなく、必要ならライブラリを好き勝手に育てられるから、むしろ身軽で早いと思うがな。
この辺はとりわけ既にいろいろお膳立てされてるPHPならではというか。
大規模開発だとどんなメリットが効いてくると考えてるかについては興味あるけどね。
フレームワークを使うにしても、それをどう使うかは結局設計して周知しないといけないわけで、その手間ってフレームワーク使わない場合とそう変わらなくない?
むしろフレームワークが足かせになってそこから外れる部分をトリッキーに遠回りに書くことになったりのデメリットの方が目についてくる感じだ。
工数削減は俺々ライブラリでやれるし、それを周知する手間も前述の周知に比べて多大なわけでもなく、必要ならライブラリを好き勝手に育てられるから、むしろ身軽で早いと思うがな。
この辺はとりわけ既にいろいろお膳立てされてるPHPならではというか。
大規模開発だとどんなメリットが効いてくると考えてるかについては興味あるけどね。
340デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/06(月) 13:00:50.54ID:933yDlcJ0 >>338
フレームワークを使わずに
リクエストパラメータを変数に入れて比較してみましょう
って超初歩的な事でも
$foo = (string) filter_input(INPUT_POST, 'foo');
if ($foo === 'var') {}
と正しく書けてる本が何冊あることやら…
$foo = (isset($_POST['foo'])) ? $_POST['foo'] : NULL;
と書けてたらまだマシで酷いのになると
$foo = $_POST['foo'];
だからPHPはヤバすぎる…
フレームワークを使わずに
リクエストパラメータを変数に入れて比較してみましょう
って超初歩的な事でも
$foo = (string) filter_input(INPUT_POST, 'foo');
if ($foo === 'var') {}
と正しく書けてる本が何冊あることやら…
$foo = (isset($_POST['foo'])) ? $_POST['foo'] : NULL;
と書けてたらまだマシで酷いのになると
$foo = $_POST['foo'];
だからPHPはヤバすぎる…
341デフォルトの名無しさん (ワッチョイ 5381-Xflc)
2018/08/06(月) 13:13:28.36ID:Xt7Beabr0 PHPがヤバいのではなく、使う奴がいい加減なだけだろう
きちんと書ける奴は、何使っても大丈夫
きちんと書ける奴は、何使っても大丈夫
342デフォルトの名無しさん (スププ Sd1f-j3zu)
2018/08/06(月) 13:19:55.19ID:UALza30Cd フレームワークの重要性が理解できない内は3流以下と自覚すべき
php以外の言語を書けない人に多い
php以外の言語を書けない人に多い
343デフォルトの名無しさん (ワッチョイ 6fd5-IwSV)
2018/08/06(月) 13:21:13.75ID:ng9YxNhi0 >>340
強制的に string でキャストして情報落とすのが正しいと言われてもなって感じだし、
$foo = $_POST['foo']; がダメというのもそんなの条件次第だろって気もするし、
大事なのは画一的な書き方じゃなくてやり方を適切に選べることなんじゃないの?
強制的に string でキャストして情報落とすのが正しいと言われてもなって感じだし、
$foo = $_POST['foo']; がダメというのもそんなの条件次第だろって気もするし、
大事なのは画一的な書き方じゃなくてやり方を適切に選べることなんじゃないの?
344デフォルトの名無しさん (ワッチョイ 5381-Xflc)
2018/08/06(月) 13:28:14.07ID:Xt7Beabr0 オレはこんな感じで書いてるな
$foo = "";
if (array_key_exists('foo', $_POST)){
$foo = $_POST['foo'];
}
$foo = "";
if (array_key_exists('foo', $_POST)){
$foo = $_POST['foo'];
}
345デフォルトの名無しさん (ワッチョイ 6fd5-IwSV)
2018/08/06(月) 13:33:40.11ID:ng9YxNhi0 >>344
そのケースなら isset 使ってる。
100万回ループのパフォーマンスなんて気にするなという話の後で言うのもアレだけど、isset の方が速いし短いから。
多重配列の時もそのまま書けるし。
そのケースなら isset 使ってる。
100万回ループのパフォーマンスなんて気にするなという話の後で言うのもアレだけど、isset の方が速いし短いから。
多重配列の時もそのまま書けるし。
346デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/06(月) 13:37:32.22ID:933yDlcJ0347デフォルトの名無しさん (スププ Sd1f-j3zu)
2018/08/06(月) 13:50:50.84ID:UALza30Cd >>346も書いてるが
?foo[]=1&foo[][]=2&foo[][][]=3
の時の$_GETの中身を見れば$fooがスカラー型になると決めつけていたらだめだと分かるはず
頭の良い人がせっかくフレームワークってのを作ってくれてるんだから我々凡人はそっち使えばいい
だからPHPerって馬鹿にされんだよw
?foo[]=1&foo[][]=2&foo[][][]=3
の時の$_GETの中身を見れば$fooがスカラー型になると決めつけていたらだめだと分かるはず
頭の良い人がせっかくフレームワークってのを作ってくれてるんだから我々凡人はそっち使えばいい
だからPHPerって馬鹿にされんだよw
348デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/06(月) 14:07:27.66ID:933yDlcJ0 >>347
応用パターンとしては
<input type="checkbox" name="foo[]" value="1">
<input type="checkbox" name="foo[]" value="2">
<input type="checkbox" name="foo[]" value="3">
というフォームがあった時に
$_GET['foo']が一次元配列になると決めつけてしまってるケース
$_GET['foo']がスカラー型にも二次元にも三次元にもなる可能性を考慮してないから
バリデーションなんかでエラーをだす残念コードがネット上にはたくさん転がってる
そういうのを初心者が真似してしまうのが問題なんだよね
応用パターンとしては
<input type="checkbox" name="foo[]" value="1">
<input type="checkbox" name="foo[]" value="2">
<input type="checkbox" name="foo[]" value="3">
というフォームがあった時に
$_GET['foo']が一次元配列になると決めつけてしまってるケース
$_GET['foo']がスカラー型にも二次元にも三次元にもなる可能性を考慮してないから
バリデーションなんかでエラーをだす残念コードがネット上にはたくさん転がってる
そういうのを初心者が真似してしまうのが問題なんだよね
349デフォルトの名無しさん (ワッチョイ 635b-0PbX)
2018/08/06(月) 14:19:09.94ID:Hk1kxuZq0 filter_inputというものをはじめて知った(´・ω・`)
issetでチェックしなさいというのは最近覚えたけどこっちの方が短く書けるね
勉強になるなあ
issetでチェックしなさいというのは最近覚えたけどこっちの方が短く書けるね
勉強になるなあ
350デフォルトの名無しさん (ワッチョイ 6fd5-IwSV)
2018/08/06(月) 14:21:43.09ID:ng9YxNhi0 >>346
最後については同意。
ただ細かい話、キャストの件は filter_input のオプション無しなら配列は取得されないんじゃないかと。
元々値があったのかどうかの判定が出来なくなるのもまた問題じゃないかね。
だからフレームワークにやってもらえばいいじゃんという立場だとは思うけどさ。
>>347
その程度のバリデーションライブラリも書けない凡人のために(ありものの)フレームワークがあるということであれば、やはりあまり縁の無い話かなと思えてくる。
隣のコンビニになら歩いて行けばいいのに、なぜ車を用意してナビまでセットする?みたいな。
フレームワークってのは、端的に言えば誰が書いても同じ書き方になる仕組みで細かいこと周知しなくてもそうなるから多人数で書いても認識が共有できる、という思想なのかと思ってたよ。
思想通りに実現されるならよさそうだが、現実はそうでもないなって感じてるけど。
PHPみたいにWebに特化してない他の言語なんかは、イチからやるよりはフレームワーク使うのが現実的だと思うし、
PHPでも俺々マイクロフレームワークの話であればその実態は必要ライブラリと雛型くらいのものだろうから、そういうのに異論は無いけどね。
最後については同意。
ただ細かい話、キャストの件は filter_input のオプション無しなら配列は取得されないんじゃないかと。
元々値があったのかどうかの判定が出来なくなるのもまた問題じゃないかね。
だからフレームワークにやってもらえばいいじゃんという立場だとは思うけどさ。
>>347
その程度のバリデーションライブラリも書けない凡人のために(ありものの)フレームワークがあるということであれば、やはりあまり縁の無い話かなと思えてくる。
隣のコンビニになら歩いて行けばいいのに、なぜ車を用意してナビまでセットする?みたいな。
フレームワークってのは、端的に言えば誰が書いても同じ書き方になる仕組みで細かいこと周知しなくてもそうなるから多人数で書いても認識が共有できる、という思想なのかと思ってたよ。
思想通りに実現されるならよさそうだが、現実はそうでもないなって感じてるけど。
PHPみたいにWebに特化してない他の言語なんかは、イチからやるよりはフレームワーク使うのが現実的だと思うし、
PHPでも俺々マイクロフレームワークの話であればその実態は必要ライブラリと雛型くらいのものだろうから、そういうのに異論は無いけどね。
351デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/06(月) 14:46:52.11ID:933yDlcJ0 >>349
Filter関数は意外と浸透してないっぽい
$foo = filter_input(INPUT_POST, 'foo');
は
$foo = (isset($_POST['foo']) && is_string($_POST['foo'])) ? $_POST['foo'] : false;
と書くのとほぼ同じ意味になる
上の方が楽だよね
Filter関数は意外と浸透してないっぽい
$foo = filter_input(INPUT_POST, 'foo');
は
$foo = (isset($_POST['foo']) && is_string($_POST['foo'])) ? $_POST['foo'] : false;
と書くのとほぼ同じ意味になる
上の方が楽だよね
352デフォルトの名無しさん (ワッチョイ 635b-0PbX)
2018/08/06(月) 15:06:29.57ID:Hk1kxuZq0 >>351
下の?を使う書き方が苦手なんよね
頭がわるいからこう書かないと理解できない(´・ω・`)
if(isset($_POST['foo'])){
$foo = $_POST['foo'];
}else{
$foo = false;
}
下の?を使う書き方が苦手なんよね
頭がわるいからこう書かないと理解できない(´・ω・`)
if(isset($_POST['foo'])){
$foo = $_POST['foo'];
}else{
$foo = false;
}
353デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/06(月) 15:40:31.71ID:933yDlcJ0 >>352
PHP7からはもっと短く
$foo = $_POST['foo'] ?? false;
と書けたりもする
三項演算子は別に無理して使わなくていいけど
他の言語を経験してると$fooを初期化せずに
if (isset($_POST['foo'])) {
$foo = $_POST['foo'];
} else {
$foo = false;
}
と$fooをif〜elseの中に入れてしまうのはとても気持ち悪い
三項演算子を使わないなら自分はこう書くかな
$foo = false;
if (isset($_POST['foo'])) {
$foo = $_POST['foo'];
}
細かい話なのであまり気にしないくてOK
PHP7からはもっと短く
$foo = $_POST['foo'] ?? false;
と書けたりもする
三項演算子は別に無理して使わなくていいけど
他の言語を経験してると$fooを初期化せずに
if (isset($_POST['foo'])) {
$foo = $_POST['foo'];
} else {
$foo = false;
}
と$fooをif〜elseの中に入れてしまうのはとても気持ち悪い
三項演算子を使わないなら自分はこう書くかな
$foo = false;
if (isset($_POST['foo'])) {
$foo = $_POST['foo'];
}
細かい話なのであまり気にしないくてOK
354デフォルトの名無しさん (ワッチョイ 635b-0PbX)
2018/08/06(月) 15:58:25.55ID:Hk1kxuZq0 ifとelseの中に書くのはあまりよくないのか(´・ω・`)
全部こうやって書いてた。。。
理由が理解できないあほですまんけど次からはfilter_inputを使うから許して
全部こうやって書いてた。。。
理由が理解できないあほですまんけど次からはfilter_inputを使うから許して
355デフォルトの名無しさん (スププ Sd1f-j3zu)
2018/08/06(月) 16:05:18.97ID:UALza30Cd if (条件A) {
$foo = 'a';
} elseif (条件B) {
$foo = 'b';
}
var_dump($foo);
条件AもBも満たさなかった時にエラーになるわな
まずはvar_dumpが参照できるレベルで$fooを定義して必ず参照できることを保証しろってこと
phpしか書けないPHPerだとelseを書けばいいだろと思うかもしれんがそうじゃないそうじゃないんだ
$foo = 'a';
} elseif (条件B) {
$foo = 'b';
}
var_dump($foo);
条件AもBも満たさなかった時にエラーになるわな
まずはvar_dumpが参照できるレベルで$fooを定義して必ず参照できることを保証しろってこと
phpしか書けないPHPerだとelseを書けばいいだろと思うかもしれんがそうじゃないそうじゃないんだ
356デフォルトの名無しさん (ワッチョイ 635b-0PbX)
2018/08/06(月) 16:29:32.52ID:Hk1kxuZq0 >>355
$test = "c";
if ($test == "a") {
$foo = 'a';
} elseif ($test == "b") {
$foo = 'b';
}
var_dump($foo);
エラーはでずにNULLと出るんだが。。何か間違ってる?
$test = "c";
if ($test == "a") {
$foo = 'a';
} elseif ($test == "b") {
$foo = 'b';
}
var_dump($foo);
エラーはでずにNULLと出るんだが。。何か間違ってる?
357デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/06(月) 16:39:22.00ID:933yDlcJ0 >>356
<?php
の次の行に
error_reporting(-1);
ini_set('display_errors', 1);
を書こう。大雑把にいうとエラーを全部出力するって意味になる
Notice: Undefined variable: foo($fooっていう変数が定義されてない)
ってエラーが出力されるはず
あと条件式は
($test == "a") じゃなくて
($test === "a") と「=」3つ使って比較しよう
理由は「PHP 型 比較」とかで適当にググって
<?php
の次の行に
error_reporting(-1);
ini_set('display_errors', 1);
を書こう。大雑把にいうとエラーを全部出力するって意味になる
Notice: Undefined variable: foo($fooっていう変数が定義されてない)
ってエラーが出力されるはず
あと条件式は
($test == "a") じゃなくて
($test === "a") と「=」3つ使って比較しよう
理由は「PHP 型 比較」とかで適当にググって
358デフォルトの名無しさん (スププ Sd1f-j3zu)
2018/08/06(月) 17:11:21.74ID:UALza30Cd >>356
エラーレベルってのがあってデフォの設定だとnoticeレベルのエラーとかは出ないようになってる
http://php.net/manual/ja/errorfunc.configuration.php#ini.error-reporting
undefineってのは未定義ってエラーなんで消したいなら最初に
$foo = null; なり $foo = ""; なりまずは$fooを定義(define)しろって事
エラーレベルってのがあってデフォの設定だとnoticeレベルのエラーとかは出ないようになってる
http://php.net/manual/ja/errorfunc.configuration.php#ini.error-reporting
undefineってのは未定義ってエラーなんで消したいなら最初に
$foo = null; なり $foo = ""; なりまずは$fooを定義(define)しろって事
359デフォルトの名無しさん (ワッチョイ 635b-0PbX)
2018/08/06(月) 17:25:08.30ID:Hk1kxuZq0 エラーが出たし理由もなんとなく分かったよ サンクス
でも今まで書いたやつにもエラーが出まくり 本を写しただけなのに(´・ω・`)
買う本を間違えたかな。。。初心者は何を買えばええんや。。。
でも今まで書いたやつにもエラーが出まくり 本を写しただけなのに(´・ω・`)
買う本を間違えたかな。。。初心者は何を買えばええんや。。。
360デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/06(月) 17:36:11.38ID:933yDlcJ0 >>359
エラーの設定ってのは学習時に一番最初にやるべき事で
本来はphp.ini(PHPの設定ファイル)の方へ設定すべき事なので
それについて書かれてないのならその本はハズレだろうねw
あと本を写したって書いてるけど
ソースコードを見たまままま打ち込む(写経と呼ばれる)作業は
何かしらの言語をもう少し書けるようになってからでいいと思う
(決して無駄ってわけじゃないけど)
今の段階だとソースが付録として付いてたり
ウェブからダウンロードできるようになってる方が良いんじゃないかな
具体的にこの本が良いと答えられたらいいんだけど
知らないんだ…すまない
エラーの設定ってのは学習時に一番最初にやるべき事で
本来はphp.ini(PHPの設定ファイル)の方へ設定すべき事なので
それについて書かれてないのならその本はハズレだろうねw
あと本を写したって書いてるけど
ソースコードを見たまままま打ち込む(写経と呼ばれる)作業は
何かしらの言語をもう少し書けるようになってからでいいと思う
(決して無駄ってわけじゃないけど)
今の段階だとソースが付録として付いてたり
ウェブからダウンロードできるようになってる方が良いんじゃないかな
具体的にこの本が良いと答えられたらいいんだけど
知らないんだ…すまない
361デフォルトの名無しさん (スププ Sd1f-j3zu)
2018/08/06(月) 17:42:18.16ID:UALza30Cd 最近はネットで動画を見ながら学習できるサービスが色々とあるからそういうのもいいんじゃね?
本は俺も知らん
phpのまともな本を探すのってウンコの山から金の塊を探すようなもんだ
本は俺も知らん
phpのまともな本を探すのってウンコの山から金の塊を探すようなもんだ
362デフォルトの名無しさん (ワッチョイ 8395-j3zu)
2018/08/06(月) 20:26:24.27ID:FCdiHJQQ0 未だにフレームワークを使う意味が分かんないとか言ってるのは中小零細の底辺ペチパーやろな
SQLとかを生で書いて文字列結合とかやってるんだぜきっと
LaravelあたりのモダンなFWを理解する頭もなさそう
SQLとかを生で書いて文字列結合とかやってるんだぜきっと
LaravelあたりのモダンなFWを理解する頭もなさそう
363デフォルトの名無しさん (ワッチョイ 5381-Xflc)
2018/08/06(月) 21:01:33.08ID:Xt7Beabr0 ウンコはすぐ分かる
まずそれを踏まないようにしよう
まずそれを踏まないようにしよう
364デフォルトの名無しさん (ササクッテロレ Spc7-gWEw)
2018/08/07(火) 06:40:30.60ID:TazhAm3Np 「サーバーを書く」っていうのはどういう意味?phpで書いたプログラムをサーバーに置いて動作するようにすることも含むの?まったく違う概念?
365デフォルトの名無しさん (ワッチョイ c376-SA/8)
2018/08/07(火) 07:57:29.50ID:fqjZQqpG0 サーバーサイドプログラムを書くってことじゃないかな
基本的には動作するところまでも含むと思うが、
そんな表現使う人の気持ち次第ってところもあるかと
基本的には動作するところまでも含むと思うが、
そんな表現使う人の気持ち次第ってところもあるかと
366デフォルトの名無しさん (ワッチョイ ff7f-gWEw)
2018/08/07(火) 08:28:33.60ID:uocr6YSL0 >>365
ありがとう
ありがとう
367デフォルトの名無しさん (ワッチョイ 6f17-j3zu)
2018/08/07(火) 10:42:59.89ID:5VqtIgbz0 サーバーサイドという言葉でくくってしまうとPHPはサーバーサイドで動くものなので語弊があるが
PHPは得意とするフロントを作る以外に例えばProxyサーバとして動作するものを短い行数で書いたりもできる
サーバーを書くってのはそういうものをPHPなり他の言語なりで書く時に使う表現かと
PHPは得意とするフロントを作る以外に例えばProxyサーバとして動作するものを短い行数で書いたりもできる
サーバーを書くってのはそういうものをPHPなり他の言語なりで書く時に使う表現かと
368デフォルトの名無しさん (ワッチョイ ff7f-gWEw)
2018/08/07(火) 10:50:55.53ID:uocr6YSL0 >>367
例えばオンライン要素(マルチプレイ)のあるゲームを作る際に、サーバーにあるDBにアクセスしてデータを出し入れするプログラムをPHPで書いた場合は「サーバーを書く」と言っていいの?
例えばオンライン要素(マルチプレイ)のあるゲームを作る際に、サーバーにあるDBにアクセスしてデータを出し入れするプログラムをPHPで書いた場合は「サーバーを書く」と言っていいの?
369デフォルトの名無しさん (ワッチョイ 8395-j3zu)
2018/08/07(火) 11:02:53.49ID:7NW2zIgs0 >>368
そういう用途では使わないと思う
Proxyみたいにサーバ上でスタンドアローンで動作するアプリと言えばいいかな?そういうものを書くイメージ
例えばwebminはhttpサーバ機能をperlで書いてるがそういうものをサーバーを書いたと言うのはしっくりと来る
そういう用途では使わないと思う
Proxyみたいにサーバ上でスタンドアローンで動作するアプリと言えばいいかな?そういうものを書くイメージ
例えばwebminはhttpサーバ機能をperlで書いてるがそういうものをサーバーを書いたと言うのはしっくりと来る
370デフォルトの名無しさん (ワッチョイ ff7f-gWEw)
2018/08/07(火) 11:04:40.27ID:uocr6YSL0371デフォルトの名無しさん (ワッチョイ 3323-SA/8)
2018/08/07(火) 11:16:29.34ID:i+V5/5w80 てか、こんなイミフ表現使うなよw
372デフォルトの名無しさん (ワッチョイ 8395-j3zu)
2018/08/07(火) 11:20:35.05ID:7NW2zIgs0 イミフか?知らないだけだろ
373デフォルトの名無しさん (ワッチョイ 6f17-j3zu)
2018/08/07(火) 11:51:01.42ID:5VqtIgbz0 ちょっとググるとguzzleでproxy書いてるのとかあったからやってみればいいんじゃないかな
そうすればサーバーを書くというのはどういうものなのか何となく分かるのでは
そうすればサーバーを書くというのはどういうものなのか何となく分かるのでは
374デフォルトの名無しさん (ワッチョイ cfb8-2Kil)
2018/08/07(火) 13:53:06.05ID:XXpusaA40 サーバってのはsocket関数使ってポートlistenしたデーモンであること
>>368はたんにバックエンドなだけ
>>368はたんにバックエンドなだけ
375デフォルトの名無しさん (ワッチョイ ff7f-gWEw)
2018/08/07(火) 14:37:02.01ID:uocr6YSL0376デフォルトの名無しさん (ワッチョイ e3cc-Xflc)
2018/08/08(水) 16:21:48.35ID:Ao8ga7ES0 VB/VBA(クラス無し)しか書かけないけど、PHP(5?)を触ることになった
入門書探してるんだけど、尼のカスタマーレビュー見るとどれも賛否両論でまともなのがない
「これ買え」ってのない?
内容全部が役に立つわけないのはわかってるから、本の特徴が知りたい
入門書探してるんだけど、尼のカスタマーレビュー見るとどれも賛否両論でまともなのがない
「これ買え」ってのない?
内容全部が役に立つわけないのはわかってるから、本の特徴が知りたい
377デフォルトの名無しさん (ワッチョイ ffd4-Mv1r)
2018/08/08(水) 16:24:03.76ID:ic4eKuJe0 リンクをクリックすると問い合わせに回答するメールの画面が開くという処理があるのですが、
EdgeとIEでは正常に動作するのですが、Chromeだと何も起こらない時があります。
$val = mb_convert_encoding($_POST['body'], "SJIS", "UTF-8");
body(本文)が短いとChromeでも正常に動作するのでbodyの内容が長い時に↑のエンコード時に何か異常が起きてると思うんですけどわかる方いますか?
EdgeとIEでは正常に動作するのですが、Chromeだと何も起こらない時があります。
$val = mb_convert_encoding($_POST['body'], "SJIS", "UTF-8");
body(本文)が短いとChromeでも正常に動作するのでbodyの内容が長い時に↑のエンコード時に何か異常が起きてると思うんですけどわかる方いますか?
378デフォルトの名無しさん (ワッチョイ ffd0-10BI)
2018/08/08(水) 17:06:31.24ID:/J/gevQO0 input要素の入力の有無を確認する方法で一般的な方法を教えてください。
1. if($hoge == ''){・・・}
2. if($hoge === ''){・・・}
3. if(empty($hoge)){・・・}
4. if(!$hoge){・・・}
5. if(!strlen($hoge)){・・・}
6. 他の良い方法も教えてください。
PHPを初めて日が浅いので変な質問をすると思いますが、よろしくお願いします。
1. if($hoge == ''){・・・}
2. if($hoge === ''){・・・}
3. if(empty($hoge)){・・・}
4. if(!$hoge){・・・}
5. if(!strlen($hoge)){・・・}
6. 他の良い方法も教えてください。
PHPを初めて日が浅いので変な質問をすると思いますが、よろしくお願いします。
379デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/08(水) 17:18:00.31ID:Evm53zpf0 >>378
<form action="" method="post">
<input type="text" name="hoge">
のフォームから飛んでくる$_POST['hoge']の値が空かどうかは
if ((string) filter_input(INPUT_POST, 'hoge') === '')
と書くのが実用的(正しいというと語弊があるので「実用的」と表現しとく)
少なくとも3や4は使っちゃ駄目
hogeに'0'が入っていても空として判定されてしまう
<form action="" method="post">
<input type="text" name="hoge">
のフォームから飛んでくる$_POST['hoge']の値が空かどうかは
if ((string) filter_input(INPUT_POST, 'hoge') === '')
と書くのが実用的(正しいというと語弊があるので「実用的」と表現しとく)
少なくとも3や4は使っちゃ駄目
hogeに'0'が入っていても空として判定されてしまう
380デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/08(水) 17:24:45.45ID:Evm53zpf0 >>377
<a href="mailto:aaa@example.com?body={$val}">〜</a>
としてリンクをクリックした時に
メーラーの本文に$valが書かれた状態にしたいって話だろうか?
もしそうならbodyに何byteまで指定できるかは環境依存なので
その方法は止めて
ローカルのMTAやSMTP使ってメールを飛ばすようにした方がいい
<a href="mailto:aaa@example.com?body={$val}">〜</a>
としてリンクをクリックした時に
メーラーの本文に$valが書かれた状態にしたいって話だろうか?
もしそうならbodyに何byteまで指定できるかは環境依存なので
その方法は止めて
ローカルのMTAやSMTP使ってメールを飛ばすようにした方がいい
381デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/08(水) 17:30:58.81ID:Evm53zpf0 >>376
ちょっと上でも話が出てるがPHPには初心者ならこれ!という本が本当にない
強いていうならPHP公式サイトにあるPHPマニュアルが一番いい
何かを作りながら学びたいのであれば
ドットインストールみたいなサービスも選択肢になるかも
ちょっと上でも話が出てるがPHPには初心者ならこれ!という本が本当にない
強いていうならPHP公式サイトにあるPHPマニュアルが一番いい
何かを作りながら学びたいのであれば
ドットインストールみたいなサービスも選択肢になるかも
382デフォルトの名無しさん (アウアウカー Sa07-8Mjq)
2018/08/08(水) 17:37:04.15ID:4S5+d1joa プログラミング言語として学ぶだけならいざ知らず, PHPの場合はほぼ確実にサーバサイドプログラミングのお作法とセットだから難しい
構文だけは簡単だけど実用しようと思うと全く初心者向けじゃないと思うわ
(サーバサイドアプリケーション自体初心者向きじゃないとは思う)
構文だけは簡単だけど実用しようと思うと全く初心者向けじゃないと思うわ
(サーバサイドアプリケーション自体初心者向きじゃないとは思う)
383デフォルトの名無しさん (ワッチョイ 3323-SA/8)
2018/08/08(水) 17:44:35.51ID:tT8nsbXK0 本屋で色々見て一番読みやすそうなの買えばいいんだよ
何が読みやすいなんて人それぞれなんだから
何が読みやすいなんて人それぞれなんだから
384378 (ワッチョイ ffd0-10BI)
2018/08/08(水) 18:05:55.26ID:/J/gevQO0385デフォルトの名無しさん (ワッチョイ e3cc-Xflc)
2018/08/08(水) 18:19:09.01ID:Ao8ga7ES0 >>381-383
やっぱなぁ
入るスキルがバラバラだからコレっつーのが難しいんだな
「PHPマニュアル」が一番ってのはわかるんだが、リファレンスであって教本じゃない感じ
XAMPP(MySQLでPHP5)環境だから、大きい本屋であさって、尼で中古買うわ
やっぱなぁ
入るスキルがバラバラだからコレっつーのが難しいんだな
「PHPマニュアル」が一番ってのはわかるんだが、リファレンスであって教本じゃない感じ
XAMPP(MySQLでPHP5)環境だから、大きい本屋であさって、尼で中古買うわ
386デフォルトの名無しさん (ワッチョイ cfb8-2Kil)
2018/08/08(水) 18:29:33.84ID:JZIh8c1S0 自分が始めた10年ぐらい前は赤マンモス本とかが流行ってたけどね
今はもう古いんじゃないかなあ
困ったときはとりあえずみんなオライリーって言うけど誰も言ってなかった
今はもう古いんじゃないかなあ
困ったときはとりあえずみんなオライリーって言うけど誰も言ってなかった
387デフォルトの名無しさん (ワッチョイ f3e9-0Uuo)
2018/08/08(水) 18:37:52.38ID:Evm53zpf0 >>384
> 3と4の方法は、日本語のみの場合、使っても問題ないということでしょうか
例えば if (empty($hoge)) は
1.$hogeが未定義(undefined)
2.$hoge = NULL
3.$hoge = (bool) false
4.$hoge = (int|float) 0
5.$hoge = (string) 0 or (string) ''
6.$hoge = (array) array() (空の配列)
なんかの時に真になる
意味を分かって使うのであれば別に絶対駄目だという訳じゃないよ
「日本語のみ」というのはPHPではどう判定するのか
そもそも日本語をどう定義するのかって話はあるけど
> 3と4の方法は、日本語のみの場合、使っても問題ないということでしょうか
例えば if (empty($hoge)) は
1.$hogeが未定義(undefined)
2.$hoge = NULL
3.$hoge = (bool) false
4.$hoge = (int|float) 0
5.$hoge = (string) 0 or (string) ''
6.$hoge = (array) array() (空の配列)
なんかの時に真になる
意味を分かって使うのであれば別に絶対駄目だという訳じゃないよ
「日本語のみ」というのはPHPではどう判定するのか
そもそも日本語をどう定義するのかって話はあるけど
388378 (ワッチョイ ffd0-10BI)
2018/08/08(水) 19:16:28.90ID:/J/gevQO0389デフォルトの名無しさん (ワッチョイ 4ad4-AlRe)
2018/08/09(木) 10:37:03.17ID:eox88/ri0 >>380
ありがとうございます。mailtoじゃなくjavascriptですけどメーラー本文に問い合わせ内容が書かれた状態にしたいです。
私は専門はオフコンなのでほとんどPHP等の知識はないのですが、作った人がもういないので仕方なく探り探りやってる状態です。
ありがとうございます。mailtoじゃなくjavascriptですけどメーラー本文に問い合わせ内容が書かれた状態にしたいです。
私は専門はオフコンなのでほとんどPHP等の知識はないのですが、作った人がもういないので仕方なく探り探りやってる状態です。
390デフォルトの名無しさん (ワッチョイ 0fe9-Qb5F)
2018/08/09(木) 11:17:35.06ID:MNGTuu+R0 >>389
今JavaScriptでやってるという方法も
結局は内部的にmailtoスキームを使ってるのではないかと思う
その方法はブラウザやブラウザから呼ばれるメールソフトに依存してしまう
しかも環境によってはそもそもメールソフトが起動しない
つまりPHPの処理の問題ではないって事ね
Googleフォームみたいに
問い合わせフォームを簡単に作れるサービスがたくさんあるので
そういうのを使ってみるのはどうだろう?
「問い合わせフォーム 作成」とかでググってみるとか
今JavaScriptでやってるという方法も
結局は内部的にmailtoスキームを使ってるのではないかと思う
その方法はブラウザやブラウザから呼ばれるメールソフトに依存してしまう
しかも環境によってはそもそもメールソフトが起動しない
つまりPHPの処理の問題ではないって事ね
Googleフォームみたいに
問い合わせフォームを簡単に作れるサービスがたくさんあるので
そういうのを使ってみるのはどうだろう?
「問い合わせフォーム 作成」とかでググってみるとか
391デフォルトの名無しさん (ワッチョイ 0fe9-Qb5F)
2018/08/09(木) 11:27:54.29ID:MNGTuu+R0 >>389
試しに実験してみたけど
Chromeはやはり?body=に長過ぎる文字列を指定してると
mailtoが反応しなくなるっぽいね
適当に10,000byteのbodyを与えみたら
Chromeはmailtoをクリックしても何も起こらなくなる
Firefoxだと2046byte以降が削除される
これはもう仕様なので他の方法にするしかないだろうね
今までも環境によっては動いてなかったんだと思うよ
試しに実験してみたけど
Chromeはやはり?body=に長過ぎる文字列を指定してると
mailtoが反応しなくなるっぽいね
適当に10,000byteのbodyを与えみたら
Chromeはmailtoをクリックしても何も起こらなくなる
Firefoxだと2046byte以降が削除される
これはもう仕様なので他の方法にするしかないだろうね
今までも環境によっては動いてなかったんだと思うよ
392デフォルトの名無しさん (ワッチョイ 6781-2km2)
2018/08/09(木) 11:39:44.99ID:2CPDzClL0393デフォルトの名無しさん (スププ Sdea-jQgE)
2018/08/09(木) 11:51:13.12ID:icZP1PWcd >>392
いやそういう問題じゃないだろ
いやそういう問題じゃないだろ
394デフォルトの名無しさん (ワッチョイ 4ad4-AlRe)
2018/08/09(木) 13:07:46.86ID:eox88/ri0395デフォルトの名無しさん (ワッチョイ 0fe9-Qb5F)
2018/08/09(木) 13:23:22.82ID:MNGTuu+R0 >>394
問い合わせ内容がメールで来るわけではなく画面に表示されて
画面内のリンクをクリックしたら返信用にメーラーが立ち上がるみたいな仕組みなのかな?
問い合わせ内容が何かしらのメールアドレス宛に届くようにしさえすれば
あとは運用で解決する問題なような気がするけど…
問い合わせ内容がメールで来るわけではなく画面に表示されて
画面内のリンクをクリックしたら返信用にメーラーが立ち上がるみたいな仕組みなのかな?
問い合わせ内容が何かしらのメールアドレス宛に届くようにしさえすれば
あとは運用で解決する問題なような気がするけど…
396394 (ワッチョイ 4ad4-AlRe)
2018/08/10(金) 10:53:33.88ID:Jh09aF/n0397デフォルトの名無しさん (ワッチョイ 06d5-++Qy)
2018/08/10(金) 12:02:22.10ID:9AhDfxBI0 運用でカバーするなら今のままでIE使わせればいいって話でもあるわな。
398デフォルトの名無しさん (ワッチョイ 8ad0-SkTr)
2018/08/11(土) 17:46:10.17ID:3QKmHOOO0 $var = $_POST['var'];
よりも
$var = filter_input(INPUT_POST,'var');
が良いんですか !?
前者は危険だと聞いた(´・ω・`)
勉強中の身だけどムズカシイ
よりも
$var = filter_input(INPUT_POST,'var');
が良いんですか !?
前者は危険だと聞いた(´・ω・`)
勉強中の身だけどムズカシイ
399デフォルトの名無しさん (ワッチョイ 6376-IYYR)
2018/08/11(土) 17:51:08.49ID:sk2SMDv70 filter_inputで少しぐぐれば出てくるでしょ
分からない単語出てきたらまたぐぐるってやってけば分かるさ
分からない単語出てきたらまたぐぐるってやってけば分かるさ
400デフォルトの名無しさん (ワッチョイ b3b3-Qb5F)
2018/08/11(土) 21:17:42.60ID:8ZYocvEQ0 >>399
前者が危険な理由はキーワード知らないと filter_input でググってもでてこないと思うけど。
前者が危険な理由はキーワード知らないと filter_input でググってもでてこないと思うけど。
401デフォルトの名無しさん (ワッチョイ 6376-IYYR)
2018/08/12(日) 00:03:01.67ID:iFUBY5JA0402デフォルトの名無しさん (ワッチョイ 6781-2km2)
2018/08/12(日) 00:08:01.15ID:B+zL8m/c0 単刀直入にやらないと、無駄にスレを消費する
403デフォルトの名無しさん (オイコラミネオ MMeb-++Qy)
2018/08/12(日) 00:31:14.89ID:UYzABTVRM filter_input だと便利な場面があるというだけで、$_POST はこれまでみんな使ってきたものだし留意点を押さえれば問題があるわけじゃない。
$_POST での参照は、そもそもそのパラメタが設定されているか、期待する型かとかを自分で判定する必要があるというだけで、fi-ter_input はそれを場合によって便利にするユーティリティ関数程度のもの。
$_POST での参照は、そもそもそのパラメタが設定されているか、期待する型かとかを自分で判定する必要があるというだけで、fi-ter_input はそれを場合によって便利にするユーティリティ関数程度のもの。
404デフォルトの名無しさん (ワッチョイ b3b3-Qb5F)
2018/08/12(日) 01:12:20.29ID:9ChOuHra0 $_POST が危険って言われるのは、変更可能なスーパーグローバルだから。
filter_input は HTTP で投げられた値を直接参照するので、$_POST とは全然別物。
ググってでてくる情報で、変数汚染に触れてる記事はないので、概要知らないとたどり着けないんだぜぃ!
filter_input は HTTP で投げられた値を直接参照するので、$_POST とは全然別物。
ググってでてくる情報で、変数汚染に触れてる記事はないので、概要知らないとたどり着けないんだぜぃ!
405デフォルトの名無しさん (ワッチョイ 06d5-++Qy)
2018/08/12(日) 07:20:34.52ID:l4hCxpRe0 変更可能だとどんな危険が考えられるの?
406デフォルトの名無しさん (ワッチョイ b3b3-Qb5F)
2018/08/12(日) 09:08:50.60ID:9ChOuHra0 >>405
行儀の悪いモジュールやライブラリとか使うと書き換えられるかも。ってぐらい。
実際にはそれほど気にしなくて良いレベルだけど、それを気にしなきゃいけないプログラムは多い。
読みやすく/使いやすく/再利用性の高いコード書くってことは、結合を疎に保つことが重要なんで、そのあたり理解してると $_POST はまず使わん。
行儀の悪いモジュールやライブラリとか使うと書き換えられるかも。ってぐらい。
実際にはそれほど気にしなくて良いレベルだけど、それを気にしなきゃいけないプログラムは多い。
読みやすく/使いやすく/再利用性の高いコード書くってことは、結合を疎に保つことが重要なんで、そのあたり理解してると $_POST はまず使わん。
407デフォルトの名無しさん (ワッチョイ 0a7f-EgBt)
2018/08/12(日) 15:04:58.70ID:9ilCyu/u0 GETも同じ?
408デフォルトの名無しさん (ワッチョイ de81-2km2)
2018/08/12(日) 15:27:03.70ID:bsEI5sh70 >>404
>$_POST が危険って言われるのは、変更可能なスーパーグローバルだから。
>filter_input は は HTTP で投げられた値を直接参照するので、$_POST とは全然別物。
$_POST が危険って言うのは聞いたことがないんだが、
Webサーバーが受けとったリクエストをPHPが取得して変数に代入している訳だろう?
PHPスクリプトが変数の値を参照するのに誰かが割り込めるのかな
リクエスト内容を直接参照すれば他が割り込めなくなるとは思えないが
filter_input がやれるなら、他も出来ると言うことだろう
>$_POST が危険って言われるのは、変更可能なスーパーグローバルだから。
>filter_input は は HTTP で投げられた値を直接参照するので、$_POST とは全然別物。
$_POST が危険って言うのは聞いたことがないんだが、
Webサーバーが受けとったリクエストをPHPが取得して変数に代入している訳だろう?
PHPスクリプトが変数の値を参照するのに誰かが割り込めるのかな
リクエスト内容を直接参照すれば他が割り込めなくなるとは思えないが
filter_input がやれるなら、他も出来ると言うことだろう
409デフォルトの名無しさん (ワッチョイ de81-2km2)
2018/08/12(日) 15:35:31.72ID:bsEI5sh70 $HTTP_POST_VARS って変数があり、
これはスーパーグローバルではないけれど
現在は非推奨となってる
これはスーパーグローバルではないけれど
現在は非推奨となってる
410デフォルトの名無しさん (ワッチョイ b3b3-Qb5F)
2018/08/12(日) 20:02:51.29ID:9ChOuHra0 >>408
ここで言う「危険」は「セキュアじゃない」って意味ではなくて、「コードが意図した通り動かない可能性がある」とかの意味。
$_POST は「スーパーグローバル変数」なので、コード内のいたる箇所で書き換えることが可能。
で、書き換えちゃった場合、それを使用している他の箇所にも影響出るよね。ってことを危険っ言ってる。
普通は書き換え行うようなことはしないけど、何かの意図があって書き換えた場合、後に想定を超える影響を及ぼす可能性が大。
filter_input は読み取りのみが保証されるので、疎結合なコードを書くには filter_input を使用することが必須。
>> 407
GET も考え方は同じ。
ここで言う「危険」は「セキュアじゃない」って意味ではなくて、「コードが意図した通り動かない可能性がある」とかの意味。
$_POST は「スーパーグローバル変数」なので、コード内のいたる箇所で書き換えることが可能。
で、書き換えちゃった場合、それを使用している他の箇所にも影響出るよね。ってことを危険っ言ってる。
普通は書き換え行うようなことはしないけど、何かの意図があって書き換えた場合、後に想定を超える影響を及ぼす可能性が大。
filter_input は読み取りのみが保証されるので、疎結合なコードを書くには filter_input を使用することが必須。
>> 407
GET も考え方は同じ。
411デフォルトの名無しさん (ワッチョイ de81-2km2)
2018/08/12(日) 20:18:35.31ID:bsEI5sh70 >>410
そういうのはバグって行って、POSTスーパーグローバル変数の問題ではないなあ
使い方が間違えているか、ワザとそうしているかだろう
普通に推奨されている方法をあえてとらないって 意味が無いと思う
自分だけでやってシステムが終わるまでメンテするって言うなら良いけど
そういうのはバグって行って、POSTスーパーグローバル変数の問題ではないなあ
使い方が間違えているか、ワザとそうしているかだろう
普通に推奨されている方法をあえてとらないって 意味が無いと思う
自分だけでやってシステムが終わるまでメンテするって言うなら良いけど
412デフォルトの名無しさん (ワッチョイ 0a7f-EgBt)
2018/08/12(日) 20:51:00.05ID:9ilCyu/u0 >>410
なるほど、ありがとう
なるほど、ありがとう
413デフォルトの名無しさん (ワッチョイ b3b3-Qb5F)
2018/08/12(日) 20:56:57.73ID:9ChOuHra0 >>411
バグの入る余地をなくして、読みやすく/使いやすく/再利用性の高い危険を回避したコードを書くには、結合を疎に保つことが重要
で、結合を疎に保つには filter_input を使用することが推奨されるって話なんだけど、通じてる?
普通に推奨されている方法をあえてとらないって 意味が無いと思う
自分だけでやってシステム終わるまでメンテするって言うなら良いけど
バグの入る余地をなくして、読みやすく/使いやすく/再利用性の高い危険を回避したコードを書くには、結合を疎に保つことが重要
で、結合を疎に保つには filter_input を使用することが推奨されるって話なんだけど、通じてる?
普通に推奨されている方法をあえてとらないって 意味が無いと思う
自分だけでやってシステム終わるまでメンテするって言うなら良いけど
414デフォルトの名無しさん (ワッチョイ de81-2km2)
2018/08/12(日) 21:02:18.40ID:bsEI5sh70 あえて書き直すほどの事は無いと思う
開発する人間が注意すれば避けられること
そこまで拘るなら、Webサーバー使わずに
自前でリクエストを受けとってしまえば良いんじゃない?
普通に推奨されているとは思わないよ。そんな関数初めて聞いたし。
どこでそんな事で大騒ぎになっているの?サイト教えて
開発する人間が注意すれば避けられること
そこまで拘るなら、Webサーバー使わずに
自前でリクエストを受けとってしまえば良いんじゃない?
普通に推奨されているとは思わないよ。そんな関数初めて聞いたし。
どこでそんな事で大騒ぎになっているの?サイト教えて
415デフォルトの名無しさん (ワッチョイ 06d5-++Qy)
2018/08/12(日) 21:24:00.23ID:l4hCxpRe0 疎結合と filter_input がいまいち結び付かん。
HTTPリクエストから必要パラメタを取り出しオブジェクト化して、後はそのオブジェクトを使ってパラメタにアクセスしましょうってんならHTTPリクエストを隠蔽できて疎かなって気もするが。
$_POST の代わりに filter_input を使うと何と何が疎になるの?って感じ。
HTTPリクエストから必要パラメタを取り出しオブジェクト化して、後はそのオブジェクトを使ってパラメタにアクセスしましょうってんならHTTPリクエストを隠蔽できて疎かなって気もするが。
$_POST の代わりに filter_input を使うと何と何が疎になるの?って感じ。
416デフォルトの名無しさん (ワッチョイ b3b3-Qb5F)
2018/08/12(日) 21:37:43.85ID:9ChOuHra0 >>414
変数のスコープのの話なんて、適当に探せばいくらでも出てくるだろうに^^;
堅牢なコードを理解してないみたいなんで、これでも見て意識改善するといいよ。
https://youtu.be/17i1EL9pBwA
変数のスコープのの話なんて、適当に探せばいくらでも出てくるだろうに^^;
堅牢なコードを理解してないみたいなんで、これでも見て意識改善するといいよ。
https://youtu.be/17i1EL9pBwA
417デフォルトの名無しさん (ワッチョイ b3b3-Qb5F)
2018/08/12(日) 21:44:39.30ID:9ChOuHra0 >>415
> HTTPリクエストから必要パラメタを取り出しオブジェクト化して、後はそのオブジェクトを使ってパラメタにアクセスしましょうってんならHTTPリクエストを隠蔽できて疎かなって気もするが。
その認識で正しいと思うよ。
ただ、それはそれ。
取り出しの時に行儀の悪いモジュールやライブラリ使用したときに、邪魔される可能性は残る。
取り出しのときにでかいスコープを回避できる 読み取り専用の関数を使用すると、予防的にコードが書けるってことです。
> HTTPリクエストから必要パラメタを取り出しオブジェクト化して、後はそのオブジェクトを使ってパラメタにアクセスしましょうってんならHTTPリクエストを隠蔽できて疎かなって気もするが。
その認識で正しいと思うよ。
ただ、それはそれ。
取り出しの時に行儀の悪いモジュールやライブラリ使用したときに、邪魔される可能性は残る。
取り出しのときにでかいスコープを回避できる 読み取り専用の関数を使用すると、予防的にコードが書けるってことです。
418デフォルトの名無しさん (ワッチョイ de81-2km2)
2018/08/12(日) 22:17:31.77ID:bsEI5sh70 PHPを扱うサイトでfilter_input が話題になっている所あるの?
見つからないんだけど
普通に推奨されている位だから、たくさんあってもおかしくはないよね?
見つからないんだけど
普通に推奨されている位だから、たくさんあってもおかしくはないよね?
419デフォルトの名無しさん (ワッチョイ de81-2km2)
2018/08/12(日) 22:25:25.71ID:bsEI5sh70 Webサーバーからリクエストを受けとるのに隠蔽も何もないと思うけどね
グローバル変数だから書き換えられる可能性があるというのも変
書き換えているのは自分じゃないか。人のせいには出来ないでしょう
大勢で開発しているなら、その処理を行う担当以外は操作禁止にするだけだし
グローバル変数だから書き換えられる可能性があるというのも変
書き換えているのは自分じゃないか。人のせいには出来ないでしょう
大勢で開発しているなら、その処理を行う担当以外は操作禁止にするだけだし
420デフォルトの名無しさん (ワッチョイ b3b3-Qb5F)
2018/08/12(日) 22:26:50.06ID:9ChOuHra0421デフォルトの名無しさん (ワッチョイ b3b3-Qb5F)
2018/08/12(日) 22:29:18.96ID:9ChOuHra0 >>419
@t_wada の前でも同じこと言えんの?
@t_wada の前でも同じこと言えんの?
422デフォルトの名無しさん (ワッチョイ 1b5d-2km2)
2018/08/12(日) 22:31:31.01ID:mMH07JtW0 既存コードを修正すべきだとまでは言わないが, 新規コードにはfilter_inputを使うべきだという点に関しては疑う余地がない
423デフォルトの名無しさん (ワッチョイ de81-2km2)
2018/08/12(日) 22:40:35.81ID:bsEI5sh70 >>420
つまり、公開されているPHP関連のサイトではそのような話題が出ていないと言うことでOK?
つまり、公開されているPHP関連のサイトではそのような話題が出ていないと言うことでOK?
424デフォルトの名無しさん (ワッチョイ 06d5-++Qy)
2018/08/12(日) 22:49:31.76ID:l4hCxpRe0 >>419
んまあデバッグしたりコマンドラインでも実行できるようにしたりする可能性を考えると、HTTPリクエストの扱いは浮かせて置いた方がいいかなって気はするよ。
後は同意。
$_POST がダメで filter_input ならいいって話には繋がらないと思うし、$_POST をわざわざ書き換えるならあえてそういう設計なんだろうけど、それが甘いか明確になってないだけじゃねとしか思わん。
そういう設計はかくかく然々でお勧めしないよって話ならまだ聞ける。
ちなみに >>416 は見たよ。
話のうまいやつで面白かったよ。
PHP にも assert あったのね。しかも運用時にいないことにできるとか、なかなかいいじゃないか。
んまあデバッグしたりコマンドラインでも実行できるようにしたりする可能性を考えると、HTTPリクエストの扱いは浮かせて置いた方がいいかなって気はするよ。
後は同意。
$_POST がダメで filter_input ならいいって話には繋がらないと思うし、$_POST をわざわざ書き換えるならあえてそういう設計なんだろうけど、それが甘いか明確になってないだけじゃねとしか思わん。
そういう設計はかくかく然々でお勧めしないよって話ならまだ聞ける。
ちなみに >>416 は見たよ。
話のうまいやつで面白かったよ。
PHP にも assert あったのね。しかも運用時にいないことにできるとか、なかなかいいじゃないか。
425デフォルトの名無しさん (ワッチョイ de81-2km2)
2018/08/12(日) 22:55:53.50ID:bsEI5sh70 キーワードで検索出来ないってことがとても不自然に感じるんだけど
普通に推奨されていると言うなら、行う記事があってもおかしくはないよね
まさか、この関数が非公開関数で秘密にしないといけないものだったりして
普通に推奨されていると言うなら、行う記事があってもおかしくはないよね
まさか、この関数が非公開関数で秘密にしないといけないものだったりして
426デフォルトの名無しさん (ワッチョイ b3b3-Qb5F)
2018/08/12(日) 22:59:03.40ID:9ChOuHra0427デフォルトの名無しさん (ワッチョイ de81-2km2)
2018/08/12(日) 22:59:36.87ID:bsEI5sh70428デフォルトの名無しさん (ワッチョイ de81-2km2)
2018/08/12(日) 23:01:06.85ID:bsEI5sh70■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- 【山形】クマ駆除で誤射した猟友会隊員に町が1663万円請求へ...弾当たり男性大けが2023年 小国町 [nita★]
- __トランプ、イスラエル支援で追加6.5億ドル承認、合計約200億ドル、この支出を国内課題への対応と比較して批判 [827565401]
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- そういえばクマのニュース減ったよな
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 木曜日のんなっしょい❗(・o・🍬)仕放題スレ🏡
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
