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
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 538a-od5V)
2017/12/20(水) 18:00:20.28ID:1xaO/YRR0938デフォルトの名無しさん (ワッチョイ db9f-cu2J)
2018/11/08(木) 07:27:25.46ID:xe/8BT4B0939デフォルトの名無しさん (ワッチョイ db17-ZE27)
2018/11/08(木) 23:31:20.72ID:bTylvWCo0 >>933
初心者でも簡単にapacheのモジュールとしてインストールして動かせるって意味では相性いいと思うよ
>>936も言ってるように
プログラミング言語というのはあくまで手段であって目的によって使い分けるものなので
これは絶対こう絶対違うって書き方してる人のことはスルーしとこう
webアプリといえばperlかc言語のcgiみたいな感じだった昔とは違って今は色んな選択肢がある
phpはその内の1つってだけ
phpのいいところは学習コストの低さかな
脳死でさっと結果を出したい時はphpみたいに何かに特化してる言語はとにかく楽
最近10年以上前にperlで書かれたcgiを触る機会があったけど
たったこれだけの事するのに何でこんなにあれこれ書かないといけないんだ…って萎えまくった(perlは文字列処理が得意だけどウェブに特化してるわけじゃないから仕方ない)
php以外にも色んな言語に触れてた方がいいとは思うけど
ウェブアプリを作ることを目的とした初学者が選ぶ言語としてはまだまだ第一選択肢となり得る言語だよ
初心者でも簡単にapacheのモジュールとしてインストールして動かせるって意味では相性いいと思うよ
>>936も言ってるように
プログラミング言語というのはあくまで手段であって目的によって使い分けるものなので
これは絶対こう絶対違うって書き方してる人のことはスルーしとこう
webアプリといえばperlかc言語のcgiみたいな感じだった昔とは違って今は色んな選択肢がある
phpはその内の1つってだけ
phpのいいところは学習コストの低さかな
脳死でさっと結果を出したい時はphpみたいに何かに特化してる言語はとにかく楽
最近10年以上前にperlで書かれたcgiを触る機会があったけど
たったこれだけの事するのに何でこんなにあれこれ書かないといけないんだ…って萎えまくった(perlは文字列処理が得意だけどウェブに特化してるわけじゃないから仕方ない)
php以外にも色んな言語に触れてた方がいいとは思うけど
ウェブアプリを作ることを目的とした初学者が選ぶ言語としてはまだまだ第一選択肢となり得る言語だよ
941デフォルトの名無しさん (スププ Sdb3-lurq)
2018/11/08(木) 23:40:19.74ID:QE0GgM25d >>939がいいことを言った
プログラミング言語には自分との相性みたいなのもあるからな
色んなものを試してみて1番自分に馴染みそうなのを選ぶのもいい
とにかく0か1かでしか物事を語れないプログラマ脳のいうことは鵜呑みにしちゃだめだ
プログラミング言語には自分との相性みたいなのもあるからな
色んなものを試してみて1番自分に馴染みそうなのを選ぶのもいい
とにかく0か1かでしか物事を語れないプログラマ脳のいうことは鵜呑みにしちゃだめだ
942デフォルトの名無しさん (ワッチョイ 2b81-ki2E)
2018/11/09(金) 00:06:22.11ID:gcFuq4sF0 perlは、同じ事するのでも人によって色々アプローチが違ってて
それはそれで面白いんだけどね
perlをとっつきにくくさせているのは変数の宣言と使い方じゃないかな
書いた人を呪いたくなる事があった
それはそれで面白いんだけどね
perlをとっつきにくくさせているのは変数の宣言と使い方じゃないかな
書いた人を呪いたくなる事があった
943デフォルトの名無しさん (ワッチョイ db17-ZE27)
2018/11/09(金) 00:20:55.59ID:9LljJNk30 >>942
TIMTOWTDIがperlの設計思想だしね
>書いた人を呪いたくなる事があった
あるある過ぎて泣ける
perlはその自由度のせいで可読性が損なわれやすい(もちろん書き方の問題)けどそういう言語は最近は不人気だね
正規表現使ってワンライナーでさくっと何かしたい時とかやっぱperlはいいなって思う事もあるけど
あんまりやり過ぎると5時間後の自分にすら読めなくなるという…
TIMTOWTDIがperlの設計思想だしね
>書いた人を呪いたくなる事があった
あるある過ぎて泣ける
perlはその自由度のせいで可読性が損なわれやすい(もちろん書き方の問題)けどそういう言語は最近は不人気だね
正規表現使ってワンライナーでさくっと何かしたい時とかやっぱperlはいいなって思う事もあるけど
あんまりやり過ぎると5時間後の自分にすら読めなくなるという…
944デフォルトの名無しさん (スププ Sdb3-lurq)
2018/11/09(金) 00:36:13.15ID:jyPZVHOtd945デフォルトの名無しさん (ワッチョイ db17-ZE27)
2018/11/09(金) 00:49:31.00ID:9LljJNk30 >>944
だね
昔は趣味のスポーツカーが流行ったけど今は使い勝手や燃費重視のコンパクトカーや軽が流行るのと同じで
pythonは悪くいえば遊び心はないけど可読性と再利用性の高さは強力な武器だよ
流行るわけだ
プログラミング言語には作者の性格が色濃く現れてるから面白いよね
php作者の名言集
https://anond.hatelabo.jp/touch/20100427231539
ディスる時によく使われるけど俺はそんなphpも好きだ
だね
昔は趣味のスポーツカーが流行ったけど今は使い勝手や燃費重視のコンパクトカーや軽が流行るのと同じで
pythonは悪くいえば遊び心はないけど可読性と再利用性の高さは強力な武器だよ
流行るわけだ
プログラミング言語には作者の性格が色濃く現れてるから面白いよね
php作者の名言集
https://anond.hatelabo.jp/touch/20100427231539
ディスる時によく使われるけど俺はそんなphpも好きだ
946デフォルトの名無しさん (スププ Sdb3-lurq)
2018/11/09(金) 00:55:17.62ID:jyPZVHOtd947デフォルトの名無しさん (ワッチョイ db17-ZE27)
2018/11/09(金) 01:07:40.13ID:9LljJNk30 わりと有名だと思うよ
ついでにこれとか
https://takahashifumiki.com/web/programing/2209/
あんまり書いてるとマジレスして怒る人が出たら嫌なのでこの辺で…
繰り返すけど言語はあくまで手段に過ぎない
phpもperlもpythonもその内の1つに過ぎないってことでおやすみなさい
ついでにこれとか
https://takahashifumiki.com/web/programing/2209/
あんまり書いてるとマジレスして怒る人が出たら嫌なのでこの辺で…
繰り返すけど言語はあくまで手段に過ぎない
phpもperlもpythonもその内の1つに過ぎないってことでおやすみなさい
948デフォルトの名無しさん (ワッチョイ 2ba5-RtHN)
2018/11/09(金) 01:30:14.07ID:YLhQ0tUv0 ちょっとだけphpすきになれたわ
949デフォルトの名無しさん (スププ Sdb3-lurq)
2018/11/09(金) 01:42:41.18ID:jyPZVHOtd 一気読みしてしまったけどめちゃくちゃ面白かった
サンクス
俺もPHPをもっと好きになれた気がするww
そしてPHPにもgotoがあることを知って驚愕
まあ使う必要はないとだろうけど
わざわざあとから付け足したみたいだが必要だったのだろうか
サンクス
俺もPHPをもっと好きになれた気がするww
そしてPHPにもgotoがあることを知って驚愕
まあ使う必要はないとだろうけど
わざわざあとから付け足したみたいだが必要だったのだろうか
950デフォルトの名無しさん (ワッチョイ b9e9-YP9l)
2018/11/09(金) 10:05:10.34ID:lA/zS5Cl0 ラスマスさんインタビュー
http://gihyo.jp/news/interview/2010/rasmus
ここでは自分のことを利己的と表現してるが
現実主義・合理主義者なんだよな
アホのいうことは相手にせず適当にスルーしてるから
>>945みたいな感じになるとw
> 言語は開発者が考えているほど重要ではありません。
> 重要なのはどのような製品が必要とされているのかではないでしょうか。
> 必要とされている製品をいかに速く作り,かつ簡単に維持するかが重要です。
> エンドユーザは,どの言語で書かれているか?なんて気にしていません。
このスレの誰かさんに100回声に出して読めといいたいw
http://gihyo.jp/news/interview/2010/rasmus
ここでは自分のことを利己的と表現してるが
現実主義・合理主義者なんだよな
アホのいうことは相手にせず適当にスルーしてるから
>>945みたいな感じになるとw
> 言語は開発者が考えているほど重要ではありません。
> 重要なのはどのような製品が必要とされているのかではないでしょうか。
> 必要とされている製品をいかに速く作り,かつ簡単に維持するかが重要です。
> エンドユーザは,どの言語で書かれているか?なんて気にしていません。
このスレの誰かさんに100回声に出して読めといいたいw
951デフォルトの名無しさん (ワッチョイ b9e9-YP9l)
2018/11/09(金) 10:08:54.85ID:lA/zS5Cl0 >>949
少し上の方にあったglobalの話と似たようなもので
使わなくて済むなら使わない方がいいって感じのもんだな
他の言語にもgotoはあるけど使ったことないや
あ、basicやったことないの?なんていうおっさんは相手にしてませんので
(書いとかないと相手にするのがめんどくさいw)
少し上の方にあったglobalの話と似たようなもので
使わなくて済むなら使わない方がいいって感じのもんだな
他の言語にもgotoはあるけど使ったことないや
あ、basicやったことないの?なんていうおっさんは相手にしてませんので
(書いとかないと相手にするのがめんどくさいw)
952デフォルトの名無しさん (ワッチョイ 2b81-ki2E)
2018/11/09(金) 10:27:43.53ID:gcFuq4sF0 Fortranは?
953デフォルトの名無しさん (ワッチョイ 93ab-ki2E)
2018/11/09(金) 13:22:28.59ID:aQf6YGTQ0 すみません、よろしくお願いします。
function readLines(string $path){
$i=0;
$file=fopen($path,'rb') or die('ファイルが見つかりません');
while($line=fgets($file,1024)){
yield $line;
}
fclose($file);
}
$gen=readLines('sample.txt');//***
foreach($gen as $line){
print $line.'<br>';
}
?>
読みだす対象ファイルは10行あります。
***の部分なのですが、$genで関数readLine()を1度呼び出して
対象ファイルから一行読みだしているように思えるのですが、
実際には、対象ファイルの全行を読みだしています。
$genで全行(10行)格納できているのは、どんな働きがあってのことなのでしょうか?
function readLines(string $path){
$i=0;
$file=fopen($path,'rb') or die('ファイルが見つかりません');
while($line=fgets($file,1024)){
yield $line;
}
fclose($file);
}
$gen=readLines('sample.txt');//***
foreach($gen as $line){
print $line.'<br>';
}
?>
読みだす対象ファイルは10行あります。
***の部分なのですが、$genで関数readLine()を1度呼び出して
対象ファイルから一行読みだしているように思えるのですが、
実際には、対象ファイルの全行を読みだしています。
$genで全行(10行)格納できているのは、どんな働きがあってのことなのでしょうか?
954デフォルトの名無しさん (アウアウイー Sa4d-D6ku)
2018/11/09(金) 13:34:20.06ID:TMuJweZBa コピペプログラミングの典型的パターン
955デフォルトの名無しさん (ワッチョイ 898a-55uJ)
2018/11/09(金) 13:47:18.90ID:sRuc/yNP0956デフォルトの名無しさん (ワッチョイ b9e9-YP9l)
2018/11/09(金) 14:03:26.71ID:lA/zS5Cl0 >>953
while ($line=fgets($file,1024)) { }
がループ処理だって事も分からないのはやばいぞ
もう少し頑張れw
このコードはだめだな
while($line=fgets($file,1024))
これだと 0 だけとか改行だけの行があったらそこで処理が止まる
同じように書くなら
while (($line = fgets($file, 1024)) !== false) { }
こう書かないと駄目
PHPerはよく if ($hoge = fuge()) みたいな書き方をするけど
分かってる上で手抜きでそう書くなら別にいいが
分かってないならそんな書き方はやめるべき
while ($line=fgets($file,1024)) { }
がループ処理だって事も分からないのはやばいぞ
もう少し頑張れw
このコードはだめだな
while($line=fgets($file,1024))
これだと 0 だけとか改行だけの行があったらそこで処理が止まる
同じように書くなら
while (($line = fgets($file, 1024)) !== false) { }
こう書かないと駄目
PHPerはよく if ($hoge = fuge()) みたいな書き方をするけど
分かってる上で手抜きでそう書くなら別にいいが
分かってないならそんな書き方はやめるべき
957デフォルトの名無しさん (ワッチョイ d374-39Ij)
2018/11/09(金) 14:08:17.39ID:9S1HIFQT0 ジェネレータ使ってるから一見何してるか分かりにくいように見えるかもね
とはいえ便利だし1行ずつ読めば難しくない
ifの条件文中で代入するのはむしろCでよく見た
とはいえ便利だし1行ずつ読めば難しくない
ifの条件文中で代入するのはむしろCでよく見た
958デフォルトの名無しさん (ワッチョイ 93ab-ki2E)
2018/11/09(金) 15:26:07.95ID:aQf6YGTQ0 ありがとうございました。
959デフォルトの名無しさん (ワッチョイ b9e9-YP9l)
2018/11/09(金) 15:37:24.13ID:lA/zS5Cl0 >>957
swiftとかpythonだとこういう書き方はできないからね(代入式が値を返さない)
そのおかげでヨーダ記法みたいなヘンテコリンな書き方をしなくてもミスが防げるんだけど
一長一短だしこの書き方を全否定してるわけじゃないってことで
perlのワンライナーが気持ちいいってのもよく分かるが
人が書いたものは見たくないというのもよく分かるw
swiftとかpythonだとこういう書き方はできないからね(代入式が値を返さない)
そのおかげでヨーダ記法みたいなヘンテコリンな書き方をしなくてもミスが防げるんだけど
一長一短だしこの書き方を全否定してるわけじゃないってことで
perlのワンライナーが気持ちいいってのもよく分かるが
人が書いたものは見たくないというのもよく分かるw
960デフォルトの名無しさん (ワッチョイ b9e9-YP9l)
2018/11/09(金) 15:42:44.74ID:lA/zS5Cl0 すまん下の2行
全然関係ない文章が入ってしまった
書こうと思って削除した文章がクリップボード履歴からコピペされてしまった
全然関係ない文章が入ってしまった
書こうと思って削除した文章がクリップボード履歴からコピペされてしまった
961デフォルトの名無しさん (ワッチョイ 2b81-ki2E)
2018/11/09(金) 16:57:09.09ID:gcFuq4sF0 分かる
心の叫びだろうw
心の叫びだろうw
962デフォルトの名無しさん (ワッチョイ 5b4b-YrFS)
2018/11/09(金) 16:59:43.84ID:aAkZVDrn0 PHPは大っ嫌いだけどLaravelは好き
963デフォルトの名無しさん (ワッチョイ 5b4b-YrFS)
2018/11/09(金) 17:13:56.97ID:aAkZVDrn0 セミコロン消えろ
964デフォルトの名無しさん (ワッチョイ b9e9-YP9l)
2018/11/09(金) 18:45:22.74ID:lA/zS5Cl0 なぜ文字列結合を . にしちゃったんだろう
フレームワークを通さずにドットチェーンでサクッと書きたい時に悲しくなっちゃう
フレームワークを通さずにドットチェーンでサクッと書きたい時に悲しくなっちゃう
965デフォルトの名無しさん (ワッチョイ 2b81-ki2E)
2018/11/09(金) 18:52:30.49ID:gcFuq4sF0 そういうしきたりがあったから
966デフォルトの名無しさん (ワッチョイ dbef-ki2E)
2018/11/09(金) 19:48:04.81ID:3iCSUlan0 >>953
$gen=readLine('sample,text'); は、$genに関数を入れてるだけで、
書き換えるのなら
foreach(readLine('sample.text') as $line){
print $line'.<br>';
}
ということでは?
$gen=readLine('sample,text'); は、$genに関数を入れてるだけで、
書き換えるのなら
foreach(readLine('sample.text') as $line){
print $line'.<br>';
}
ということでは?
967デフォルトの名無しさん (ワッチョイ 93ab-ki2E)
2018/11/10(土) 13:09:23.21ID:w8ozGR5u0968デフォルトの名無しさん (ワッチョイ db17-ZE27)
2018/11/10(土) 17:34:15.93ID:KJE8CLNB0969デフォルトの名無しさん (ワッチョイ 93ab-ki2E)
2018/11/10(土) 17:57:23.60ID:w8ozGR5u0 >>968
ありがとうございます。
各yieldの前後や、関数の呼び出し元に
print文でどこを実行しているのかを表示させるようにして確認しました。
yield fromを混ぜ込んだ文も、同様に処理するようにしたら
ずいぶん理解できるようになりました。
皆様、ありがとうございます。
ありがとうございます。
各yieldの前後や、関数の呼び出し元に
print文でどこを実行しているのかを表示させるようにして確認しました。
yield fromを混ぜ込んだ文も、同様に処理するようにしたら
ずいぶん理解できるようになりました。
皆様、ありがとうございます。
970デフォルトの名無しさん (ワッチョイ f380-9/Uq)
2018/11/10(土) 22:20:51.20ID:16GnFLu/0 $gen=readLine('sample,text');
これで代入されてるのは関数じゃなくてジェネレータ関数が返す反復可能なオブジェクト(への参照)かな
ジェネレーター関数を呼び出したのをvar_dumpするとこんな感じだわ
object(Generator)#1 (0) {}
これで代入されてるのは関数じゃなくてジェネレータ関数が返す反復可能なオブジェクト(への参照)かな
ジェネレーター関数を呼び出したのをvar_dumpするとこんな感じだわ
object(Generator)#1 (0) {}
971デフォルトの名無しさん (ワッチョイ 5b4b-YrFS)
2018/11/11(日) 16:39:55.95ID:kuiXddTN0 Laravelのログイン処理をゼロから解説してる学習リソースありますか?
972デフォルトの名無しさん (ワッチョイ d176-mqgT)
2018/11/12(月) 01:02:22.66ID:FJ/7DuU50 青い本とオレンジ色の本
Amazonで探せばすぐにわかる
Amazonで探せばすぐにわかる
973デフォルトの名無しさん (ワッチョイ d176-mqgT)
2018/11/12(月) 01:05:34.03ID:FJ/7DuU50 あとはLaravel公式リファレンス
https://readouble.com/laravel/5.7/ja/authentication.html
https://readouble.com/laravel/5.7/ja/authentication.html
974デフォルトの名無しさん (ワッチョイ 95a5-4fLB)
2018/11/17(土) 20:03:24.34ID:yvB12Mei0 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10199147355
Laravelで糞以下の質問をしている奴を見つけた。
Laravelで糞以下の質問をしている奴を見つけた。
975デフォルトの名無しさん (ブーイモ MMb9-N102)
2018/11/17(土) 23:01:03.89ID:2QpS/L3VM >>974
こんな性格じゃそりゃいつまで経ってもゴミのままだわな
こんな性格じゃそりゃいつまで経ってもゴミのままだわな
976デフォルトの名無しさん (ワッチョイ 95a5-4fLB)
2018/11/18(日) 00:24:19.00ID:lxV5KuwV0 >>975
ソースも性格もゴミ
そしてその質問者のTwitter
https://twitter.com/tekitouk
https://twitter.com/5chan_nel (5ch newer account)
ソースも性格もゴミ
そしてその質問者のTwitter
https://twitter.com/tekitouk
https://twitter.com/5chan_nel (5ch newer account)
977デフォルトの名無しさん (ワッチョイ e3ab-zhOP)
2018/11/24(土) 16:02:54.40ID:iAypOYs00 よろしくお願いします。
for($i=1;print"{$i}<br>",$i<6;$i++);
for($i=1;$i<6,print"{$i}<br>";$i++);
前者は、1〜6までをプリントしますが、後者は無限にプリントされてしまいます。i++が6を超えてしまうのはなぜなのでしょうか?
for($i=1;print"{$i}<br>",$i<6;$i++);
for($i=1;$i<6,print"{$i}<br>";$i++);
前者は、1〜6までをプリントしますが、後者は無限にプリントされてしまいます。i++が6を超えてしまうのはなぜなのでしょうか?
978デフォルトの名無しさん (ワッチョイ bf7e-A3/R)
2018/11/24(土) 16:33:47.44ID:ue64utAZ0979デフォルトの名無しさん (ワッチョイ c39e-qSu8)
2018/11/24(土) 17:52:32.26ID:cnsZLZxi0 こんなコード書かれたら頭痛いンゴ
980デフォルトの名無しさん (ワッチョイ 7f74-zhOP)
2018/11/24(土) 18:03:15.60ID:+h/hylzW0 https://github.com/php/php-src/blob/master/Zend/zend_compile.c#L4597
https://github.com/php/php-src/blob/master/Zend/zend_compile.c#L4575
zend_compile_expr_listを見る限りexprの並びは最終評価値が返る
そもそも>>977のコードは書いたやつ殴るレベルだが
https://github.com/php/php-src/blob/master/Zend/zend_compile.c#L4575
zend_compile_expr_listを見る限りexprの並びは最終評価値が返る
そもそも>>977のコードは書いたやつ殴るレベルだが
981デフォルトの名無しさん (ワッチョイ 6fef-zhOP)
2018/11/25(日) 09:04:25.92ID:dabdOdKd0 >>978
ありがとうございます。
判定がtrueになり続けてしまうということなのですね。
もう一つ質問があります。
class A{
private $B;
public function __construcr($C){
$this->B=$C;
}
というコードなのですが、classAのフィールドで変数$Bを宣言して
関数のコンストラクタの$thisで、変数$Bに引数を代入してますが
この時、変数Bの$が取れているのはどういう仕様なのでしょうか?
ありがとうございます。
判定がtrueになり続けてしまうということなのですね。
もう一つ質問があります。
class A{
private $B;
public function __construcr($C){
$this->B=$C;
}
というコードなのですが、classAのフィールドで変数$Bを宣言して
関数のコンストラクタの$thisで、変数$Bに引数を代入してますが
この時、変数Bの$が取れているのはどういう仕様なのでしょうか?
982デフォルトの名無しさん (ワッチョイ 8f9f-JFh/)
2018/11/25(日) 09:17:54.45ID:43hAniU60 $が取れていることで可変関数を使える仕様になっている
983デフォルトの名無しさん (ワッチョイ 6fef-zhOP)
2018/11/26(月) 15:12:38.13ID:aqdzSIAP0984デフォルトの名無しさん (ワッチョイ e3ab-zhOP)
2018/11/26(月) 18:28:25.99ID:vghby52J0 $db=getDb();
$opDB=$db->prepare('SELECT * FROM sample WHERE id=?');
$opDB->bindValue(1,$_GET['id'] ?:1);
このコードから質問お願いします。
2行目の id=? は、ワイルドカードのようなものですか?
3行目のbindValueの一つ目のパラメータの1は、何を指しているのでしょうか?
$opDB=$db->prepare('SELECT * FROM sample WHERE id=?');
$opDB->bindValue(1,$_GET['id'] ?:1);
このコードから質問お願いします。
2行目の id=? は、ワイルドカードのようなものですか?
3行目のbindValueの一つ目のパラメータの1は、何を指しているのでしょうか?
985デフォルトの名無しさん (ワッチョイ cf81-zhOP)
2018/11/26(月) 18:34:58.26ID:9UWiUoMZ0 一つ目:イイエ
二つ目:一つ目の?
二つ目:一つ目の?
986デフォルトの名無しさん (ワッチョイ e3ab-zhOP)
2018/11/27(火) 09:20:32.54ID:bFvRPa1H0 返答ありがとうございます。
id=? っていうのは、どういう働きをするコードなのでしょう
一つ目とか、bindValue(1,$_GET['id']);の、'1'です
id=? っていうのは、どういう働きをするコードなのでしょう
一つ目とか、bindValue(1,$_GET['id']);の、'1'です
987デフォルトの名無しさん (ワッチョイ 73e9-Kv/S)
2018/11/27(火) 14:57:55.52ID:aBLKPQ100 >>984
>>986
SELECT * FROM sample WHERE id=?
というSQLの中で使われている「?」はプリペアドステートメントというもの
http://php.net/manual/ja/pdo.prepared-statements.php
?だと理解し難いなら名前付き(例えば今回なら :id とか)にした方が理解しやすいと思う
$hoge = $_GET['id'] ?: 1;
はエルビス演算子という三項演算子を省略した書き方
可読性が悪いのであんまり使わない方が良いと思う
・同じ事を三項演算子で書くなら
$hoge = ($_GET['id']) ? $_GET['id'] : 1;
・同じ事をif文で書くなら
if ($_GET['id']) {
$hoge = $_GET['id'];
} else {
$hoge = 1;
}
だが、このケースでは、こんな書き方をしてはいけない。
(続く)
>>986
SELECT * FROM sample WHERE id=?
というSQLの中で使われている「?」はプリペアドステートメントというもの
http://php.net/manual/ja/pdo.prepared-statements.php
?だと理解し難いなら名前付き(例えば今回なら :id とか)にした方が理解しやすいと思う
$hoge = $_GET['id'] ?: 1;
はエルビス演算子という三項演算子を省略した書き方
可読性が悪いのであんまり使わない方が良いと思う
・同じ事を三項演算子で書くなら
$hoge = ($_GET['id']) ? $_GET['id'] : 1;
・同じ事をif文で書くなら
if ($_GET['id']) {
$hoge = $_GET['id'];
} else {
$hoge = 1;
}
だが、このケースでは、こんな書き方をしてはいけない。
(続く)
988デフォルトの名無しさん (ワッチョイ 73e9-Kv/S)
2018/11/27(火) 14:59:13.82ID:aBLKPQ100 (続き)
$_GET['id']が定義されていない事を考慮した正しい書き方は
・PHP7以降ならNULL合体演算子を使って
$hoge = $_GET['id'] ?? 1;
・↑が分かり難いなら
$hoge = (isset($_GET['id'])) ? $_GET['id'] : 1;
・↑でも分かり難いなら
if (isset($_GET['id'])) {
$hoge = $_GET['id'];
} else {
$hoge = 1;
}
このケースでエルビス演算子をこんな使い方するような糞コードは、あんまり参考にしない方がいい
$_GET['id']が定義されていない事を考慮した正しい書き方は
・PHP7以降ならNULL合体演算子を使って
$hoge = $_GET['id'] ?? 1;
・↑が分かり難いなら
$hoge = (isset($_GET['id'])) ? $_GET['id'] : 1;
・↑でも分かり難いなら
if (isset($_GET['id'])) {
$hoge = $_GET['id'];
} else {
$hoge = 1;
}
このケースでエルビス演算子をこんな使い方するような糞コードは、あんまり参考にしない方がいい
989デフォルトの名無しさん (ワッチョイ 73e9-Kv/S)
2018/11/27(火) 15:06:26.62ID:aBLKPQ100 >>977も読んだが、エルビス演算子の使い方といい
いったい何を参考にしてこんなコードを書いてるんだろうか
もし本を参考にしてるなら焼き捨てた方がいいレベルで酷い
クイズ的に質問してるなら面白いけどw
いったい何を参考にしてこんなコードを書いてるんだろうか
もし本を参考にしてるなら焼き捨てた方がいいレベルで酷い
クイズ的に質問してるなら面白いけどw
990デフォルトの名無しさん (ワッチョイ c39e-qSu8)
2018/11/27(火) 16:49:32.78ID:BR30Kh7X0 演算子の説明だけだとシンプルで理解しやすいけど実用性ではクソ
実用性重視の説明だと本来説明したいもの以外の説明で蛇足だらけで
紙面使いすぎでクソ
というジレンマなんやろ
実用性重視の説明だと本来説明したいもの以外の説明で蛇足だらけで
紙面使いすぎでクソ
というジレンマなんやろ
991デフォルトの名無しさん (ワッチョイ 6fe7-sCK9)
2018/11/27(火) 18:08:09.22ID:MA03kwvb0 $input = trim(fgets(STDIN));
while($input)
{
echo $input;
}
これってwhileの式のところでは$inputの中が空かって判断してるの?そういう機能がついてるのか?
while($input)
{
echo $input;
}
これってwhileの式のところでは$inputの中が空かって判断してるの?そういう機能がついてるのか?
992デフォルトの名無しさん (ワッチョイ cf80-fhi1)
2018/11/27(火) 18:52:40.99ID:DSo9/Qg/0 >>984
SELECT * FROM sample WHERE id=?
id=? は、placement。
? の所に、値が入る
SQL injection 対策
例えば、単純な文字列をつなげて、問い合わせると、
? が「1; DROP TABLE 何々」とか、クラッカーに入力されると、
「SELECT * FROM sample WHERE id=1; DROP TABLE 何々」のように、
; で、危険なSQL文をつなげてくる
placement で、SQL文をつなげられないようにしている
SELECT * FROM sample WHERE id=?
id=? は、placement。
? の所に、値が入る
SQL injection 対策
例えば、単純な文字列をつなげて、問い合わせると、
? が「1; DROP TABLE 何々」とか、クラッカーに入力されると、
「SELECT * FROM sample WHERE id=1; DROP TABLE 何々」のように、
; で、危険なSQL文をつなげてくる
placement で、SQL文をつなげられないようにしている
993デフォルトの名無しさん (ワッチョイ 73e9-Kv/S)
2018/11/27(火) 19:01:55.97ID:aBLKPQ100 >>991
そのコードだと、trim(fgets(STDIN))の値が (bool) true であった場合に永久ループになるw
実際は
while ($input = trim(fgets(STDIN))) {
echo $input;
}
こう書くべき処理なのでは?
そのコードだと、trim(fgets(STDIN))の値が (bool) true であった場合に永久ループになるw
実際は
while ($input = trim(fgets(STDIN))) {
echo $input;
}
こう書くべき処理なのでは?
994デフォルトの名無しさん (ワッチョイ 6fe7-sCK9)
2018/11/27(火) 19:53:06.64ID:MA03kwvb0 while分の中では$inputをbool型にして判定してるわけか?
995デフォルトの名無しさん (ワッチョイ ffd2-f63u)
2018/11/27(火) 22:02:27.91ID:7ygBETe/0 空文字がFalse判定されることを利用して
空行入力で終わるようにしてるんだろうけど
ゼロとかもFalse判定されて終わっちゃうんじゃないか
試してないけど
空行入力で終わるようにしてるんだろうけど
ゼロとかもFalse判定されて終わっちゃうんじゃないか
試してないけど
996デフォルトの名無しさん (ワッチョイ cf80-fhi1)
2018/11/28(水) 12:01:30.07ID:eIHsuPDh0 Ruby では、nil, false の偽が2つだけ。
一方、JavaScript, Python, PHP などは、偽が10個ぐらいあるから、超危険!
基本的に、Ruby 以外は、バグってどうしようもない
一方、JavaScript, Python, PHP などは、偽が10個ぐらいあるから、超危険!
基本的に、Ruby 以外は、バグってどうしようもない
997デフォルトの名無しさん (ワッチョイ e3ab-zhOP)
2018/11/28(水) 12:52:07.66ID:yr9LfNgh0 >>987
ありがとうございました。プレイスホルダなのですね。
prepareでSQLを用いて、プレイスホルダを使うとき、
SQL文の中で、左から数えたプレイスホルダの順番を、
bindValueのカッコ内の数値で指定してバインドする、ということもわかりました。
?:や??:の解説もありがとうございました。
>>989
独習phpというテキストを使っています。
>>992
ありがとうございます。
prepareステートメントが悪意ある入力に対策しているとテキストにも書いてありました。
皆様、ありがとうとざいました。
今のテキストを読み終えたら、もう少しテキストを吟味して、違うテキストを探してみようと思います。
ありがとうございました。プレイスホルダなのですね。
prepareでSQLを用いて、プレイスホルダを使うとき、
SQL文の中で、左から数えたプレイスホルダの順番を、
bindValueのカッコ内の数値で指定してバインドする、ということもわかりました。
?:や??:の解説もありがとうございました。
>>989
独習phpというテキストを使っています。
>>992
ありがとうございます。
prepareステートメントが悪意ある入力に対策しているとテキストにも書いてありました。
皆様、ありがとうとざいました。
今のテキストを読み終えたら、もう少しテキストを吟味して、違うテキストを探してみようと思います。
998デフォルトの名無しさん (ワッチョイ 73e9-Kv/S)
2018/11/28(水) 15:13:42.98ID:zpzfEtE+0999デフォルトの名無しさん (ワッチョイ 73e9-Kv/S)
2018/11/28(水) 15:17:38.93ID:zpzfEtE+0 すまんw 大嘘書いたww
>>998のコードだと trim() によって string型にキャストされるから永久ループするわwww
while (($input = fgets(STDIN)) !== false) {
echo $input;
}
が正しいが場合によっては
while (($input = trim(fgets(STDIN))) !== '') {
echo $input;
}
が期待した動作なのかもしれない
>>998のコードだと trim() によって string型にキャストされるから永久ループするわwww
while (($input = fgets(STDIN)) !== false) {
echo $input;
}
が正しいが場合によっては
while (($input = trim(fgets(STDIN))) !== '') {
echo $input;
}
が期待した動作なのかもしれない
1000デフォルトの名無しさん (ワッチョイ cfe8-+65u)
2018/11/28(水) 17:09:43.57ID:Nb5yTkdM010011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 342日 23時間 9分 23秒
新しいスレッドを立ててください。
life time: 342日 23時間 9分 23秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 [蚤の市★]
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- クリスマスの「予定なし」54% [少考さん★]
- 日銀0.75%に利上げへ、30年ぶりの水準に 19日金融政策決定会合 [蚤の市★]
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 ★2 [蚤の市★]
- 【実況】博衣こよりのえちえち機動戦士ガンダム逆襲のシャア🧪★2
- 【実況】博衣こよりのえちえち機動戦士ガンダム逆襲のシャア🧪★3
- コーヒー、来年3月から30パーセント値上げへ [709039863]
- 茶ぁしばこうや···
- 愛国者「釘を使わない日本独自の伝統工法スゴイ!」X民「それ中国起源ですよ」→批判殺到 [834922174]
- 【画像】兵庫県民「立花さんの動画を見て真実を知った。斎藤さん頑張れ!」→立花、デマ中傷で逮捕 [732289945]
