【PHP】下らねぇ質問はここに 9
レス数が1000を超えています。これ以上書き込みはできません。
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 xamppでPHPUnitの連続実行ってどうやるの?
shスクリプトでは複数行書けば全部実行してくれる。
batファイルだと最初の1行を実行して終了する。
おま環? >>895
>>896
>>897
ありがとうございました。
よく理解できていないのでメモさせてもらい
勉強を進めて後々で再度確認してみます laravelがrailsと比べて優れているところ教えて下さい 最大のメリットは php である事。最大のデメリットも php であること。
。。。比較の軸ぐらい考えろよ。オマエアホだろ。 >>916
言語の質ではなくフレームワークの質を聞いてるんです。 比較の軸が出てきたなw
どっちも変わらん。要件次第。
もうちょっと聞きたいことを整理して質問しようぜぃ♪ >>919
プログラミング初心者なので一番知りたいのは学習コストで、どちらが学習コスト低いですか?やはり日本語情報の多いRailsの方が有利でしょうか?わかりやすさの面ではどちらでしょうか?もう1つ聴きたいのですが将来性はどちらに方があるでしょうか?長文すいません。 書いてんじゃん。どっちも変わらん。要件次第。前提次第。
XXと〇〇、どっちが優れてますか系の質問するやつにまともなエンジニアはいないんだよ。
要件整理して、前提確認して、比較軸作って、ドキュメント読んで、必要なら検証するのがエンジニア。
手が動かないなら向いてない。 >どっちが優れてますか系の質問するやつにまともなエンジニアはいないんだよ
>手が動かないなら向いてない
これ両方共すげぇ分かるww ものすごく感覚的な話で申し訳ないけど
Railsは出た当時は画期的だったけど、他のフレームワークがRailsの良いところをどんどん取り込んでいったので優位性がなくなっていってるイメージが強いかな
あとこんな事書くとRuby使いの人が怒るだろうけど
どこかの海外フォーラムで最近、死に向く言語ランキング上位にrubyが入ってたっけ
ソースを探したんだけど、どこだったかど忘れして探しきれなかった
申し訳ない
かといってこれから先はPHP?って言われると答えはNoだけど(スレのみんなごめん)
今から勉強始めるなら、個人的には色んな意味でPythonをおすすめするかな
Pythonっていうと機械学習や深層学習のイメージが強いと思うけど、
WEBフレームワークもどんどん進化してるし、
スクレイピングライブラリなんかも超高性能なのが出てきてるし
手っ取り早く結果を出すだけならまだまだPHPの方がかなり楽だけどね サーパーサイドなんてもうNode一択
他はNode書けないやつが使うもの >>926
ruby のどんな点がクソなんですか? バグらない、Ruby >> Python, JavaScript >> PHP、よくバグル
PHP の本は、デザイン主体だろ。
プログラミングの本は、ほとんどない
ゲームエンジン・フレームワークの巨人、掌田津耶乃の本も、初めて出たばっかり。
Node.js超入門、2017
Python Django 超入門、2018
Rails は既に、何十冊も出ている。
この2冊が最短
たのしいRuby 第5版、2016
改訂4版 基礎 Ruby on Rails、黒田努・佐藤和人、2018/9/7
他に、無料のRails チュートリアルがある。
これの10日ぐらいの解説講座もあるらしい
YouTube に、Rails の動画もある。
フリーエンジニアになる人は、Rails が多い
Pythonは、ラズパイ・AI・機械学習・統計処理とか、普通のウェブページではない。
サーバーサイドは、node.js
Railsでも、HTML, CSS, JavaScript(JS), jQuery は必須だから、
プログラミングやテスト工程をマスターするには、Rubyがよい
Railsの前に、Sinatra をいじくりまわして、ウェブページの仕組みを学ぶのがよい。
Nokogiri, Selenium WebDriver で、スクレイピングするのも勉強になる
Rubyで学んだことは、そっくり、JS で使えるから、JSで学ぶよりも効率的。
Rubyの方が、他の言語よりも可読性が高く、バグらないから! ちゃんとした質問しないから、エンジニアになれなかった亡霊が無駄コメント残し始めたじゃないか。。。
責任とって、クローズしろよ。 git commit -m "close #915" HTMLとJVSCRIPT、PHPは相性がいいの?
SNSとかコミュニティサイトを作って
海外のユーザにも利用してもらおうとしたら、PHP? 相性は別に良くないと思うよ。
フレームワーク次第じゃない?
そういう話なら既存のOSSなSNSをインストールするべきと思う。
OpenPNEやWordPressのプラグイン等など… プログラム言語やツールは物を作る道具や手段であってできるものに変わりはない
HTMLのようなGUIを作る場合はエディタが出来栄えを左右することもあるだろう
ただPHPでやることはバックエンドの目に見えない地味な場所であって
頑張って書くようなコードでもなければ体感速度もサーバのスペックが大きく物を言う
そんなところで良し悪しを熱く語ってるやつはたいていアホで出来ない子
つられやすい話題につられるのもアホで出来ない子 HTMLやCSS出来なくても
WordPress使えば誰でも子供でも
ホームページが!
それもタダで無料で!
WordPressはPHPで構成されてます人気もあります
でも問題ないわけではないです!
子供より若い園児向きには Flat-File CMSを
データベース不要でPHPで動きます! >>936
意味わからんこと言って不親切よりいいわ。
そんなにもできる子は世の中お前しかいないんだよ。 >>933
初心者でも簡単にapacheのモジュールとしてインストールして動かせるって意味では相性いいと思うよ
>>936も言ってるように
プログラミング言語というのはあくまで手段であって目的によって使い分けるものなので
これは絶対こう絶対違うって書き方してる人のことはスルーしとこう
webアプリといえばperlかc言語のcgiみたいな感じだった昔とは違って今は色んな選択肢がある
phpはその内の1つってだけ
phpのいいところは学習コストの低さかな
脳死でさっと結果を出したい時はphpみたいに何かに特化してる言語はとにかく楽
最近10年以上前にperlで書かれたcgiを触る機会があったけど
たったこれだけの事するのに何でこんなにあれこれ書かないといけないんだ…って萎えまくった(perlは文字列処理が得意だけどウェブに特化してるわけじゃないから仕方ない)
php以外にも色んな言語に触れてた方がいいとは思うけど
ウェブアプリを作ることを目的とした初学者が選ぶ言語としてはまだまだ第一選択肢となり得る言語だよ >>939がいいことを言った
プログラミング言語には自分との相性みたいなのもあるからな
色んなものを試してみて1番自分に馴染みそうなのを選ぶのもいい
とにかく0か1かでしか物事を語れないプログラマ脳のいうことは鵜呑みにしちゃだめだ perlは、同じ事するのでも人によって色々アプローチが違ってて
それはそれで面白いんだけどね
perlをとっつきにくくさせているのは変数の宣言と使い方じゃないかな
書いた人を呪いたくなる事があった >>942
TIMTOWTDIがperlの設計思想だしね
>書いた人を呪いたくなる事があった
あるある過ぎて泣ける
perlはその自由度のせいで可読性が損なわれやすい(もちろん書き方の問題)けどそういう言語は最近は不人気だね
正規表現使ってワンライナーでさくっと何かしたい時とかやっぱperlはいいなって思う事もあるけど
あんまりやり過ぎると5時間後の自分にすら読めなくなるという… >>943
設計思想的にPerlの対極にいるのがPythonで今や大人気だもんな
Pythonは数学者が作ってPerlは言語学者が作ったって話を初めて知った時はめちゃくちゃ納得した >>944
だね
昔は趣味のスポーツカーが流行ったけど今は使い勝手や燃費重視のコンパクトカーや軽が流行るのと同じで
pythonは悪くいえば遊び心はないけど可読性と再利用性の高さは強力な武器だよ
流行るわけだ
プログラミング言語には作者の性格が色濃く現れてるから面白いよね
php作者の名言集
https://anond.hatelabo.jp/touch/20100427231539
ディスる時によく使われるけど俺はそんなphpも好きだ >>945
> 僕なら、10リクエストごとにApacheを再起動しますね
ワロタwwwww
これ有名なの?恥ずかしながら初めて知った
面白いな わりと有名だと思うよ
ついでにこれとか
https://takahashifumiki.com/web/programing/2209/
あんまり書いてるとマジレスして怒る人が出たら嫌なのでこの辺で…
繰り返すけど言語はあくまで手段に過ぎない
phpもperlもpythonもその内の1つに過ぎないってことでおやすみなさい 一気読みしてしまったけどめちゃくちゃ面白かった
サンクス
俺もPHPをもっと好きになれた気がするww
そしてPHPにもgotoがあることを知って驚愕
まあ使う必要はないとだろうけど
わざわざあとから付け足したみたいだが必要だったのだろうか ラスマスさんインタビュー
http://gihyo.jp/news/interview/2010/rasmus
ここでは自分のことを利己的と表現してるが
現実主義・合理主義者なんだよな
アホのいうことは相手にせず適当にスルーしてるから
>>945みたいな感じになるとw
> 言語は開発者が考えているほど重要ではありません。
> 重要なのはどのような製品が必要とされているのかではないでしょうか。
> 必要とされている製品をいかに速く作り,かつ簡単に維持するかが重要です。
> エンドユーザは,どの言語で書かれているか?なんて気にしていません。
このスレの誰かさんに100回声に出して読めといいたいw >>949
少し上の方にあったglobalの話と似たようなもので
使わなくて済むなら使わない方がいいって感じのもんだな
他の言語にもgotoはあるけど使ったことないや
あ、basicやったことないの?なんていうおっさんは相手にしてませんので
(書いとかないと相手にするのがめんどくさいw) すみません、よろしくお願いします。
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行)格納できているのは、どんな働きがあってのことなのでしょうか? >>953
たった8行しかない関数なんだから
自分で1行ごとに何しているかを調べてみよう >>953
while ($line=fgets($file,1024)) { }
がループ処理だって事も分からないのはやばいぞ
もう少し頑張れw
このコードはだめだな
while($line=fgets($file,1024))
これだと 0 だけとか改行だけの行があったらそこで処理が止まる
同じように書くなら
while (($line = fgets($file, 1024)) !== false) { }
こう書かないと駄目
PHPerはよく if ($hoge = fuge()) みたいな書き方をするけど
分かってる上で手抜きでそう書くなら別にいいが
分かってないならそんな書き方はやめるべき ジェネレータ使ってるから一見何してるか分かりにくいように見えるかもね
とはいえ便利だし1行ずつ読めば難しくない
ifの条件文中で代入するのはむしろCでよく見た >>957
swiftとかpythonだとこういう書き方はできないからね(代入式が値を返さない)
そのおかげでヨーダ記法みたいなヘンテコリンな書き方をしなくてもミスが防げるんだけど
一長一短だしこの書き方を全否定してるわけじゃないってことで
perlのワンライナーが気持ちいいってのもよく分かるが
人が書いたものは見たくないというのもよく分かるw すまん下の2行
全然関係ない文章が入ってしまった
書こうと思って削除した文章がクリップボード履歴からコピペされてしまった なぜ文字列結合を . にしちゃったんだろう
フレームワークを通さずにドットチェーンでサクッと書きたい時に悲しくなっちゃう >>953
$gen=readLine('sample,text'); は、$genに関数を入れてるだけで、
書き換えるのなら
foreach(readLine('sample.text') as $line){
print $line'.<br>';
}
ということでは? >>966
ありがとうございます。変数に関数を入れられるのですね。
書き換えられた方はテキストの別のページに載ってるのと似ているので理解できました。
すっきりしました。ありがとうございました。 >>967
別の人も書いてるけどジェネレーター(yield)を使ってて分かりにくいなら
yield使わずに同じことやってみたらいいかも >>968
ありがとうございます。
各yieldの前後や、関数の呼び出し元に
print文でどこを実行しているのかを表示させるようにして確認しました。
yield fromを混ぜ込んだ文も、同様に処理するようにしたら
ずいぶん理解できるようになりました。
皆様、ありがとうございます。 $gen=readLine('sample,text');
これで代入されてるのは関数じゃなくてジェネレータ関数が返す反復可能なオブジェクト(への参照)かな
ジェネレーター関数を呼び出したのをvar_dumpするとこんな感じだわ
object(Generator)#1 (0) {} Laravelのログイン処理をゼロから解説してる学習リソースありますか? 青い本とオレンジ色の本
Amazonで探せばすぐにわかる >>974
こんな性格じゃそりゃいつまで経ってもゴミのままだわな よろしくお願いします。
for($i=1;print"{$i}<br>",$i<6;$i++);
for($i=1;$i<6,print"{$i}<br>";$i++);
前者は、1〜6までをプリントしますが、後者は無限にプリントされてしまいます。i++が6を超えてしまうのはなぜなのでしょうか? >>978
ありがとうございます。
判定がtrueになり続けてしまうということなのですね。
もう一つ質問があります。
class A{
private $B;
public function __construcr($C){
$this->B=$C;
}
というコードなのですが、classAのフィールドで変数$Bを宣言して
関数のコンストラクタの$thisで、変数$Bに引数を代入してますが
この時、変数Bの$が取れているのはどういう仕様なのでしょうか? $が取れていることで可変関数を使える仕様になっている >>982
ありがとうございます。
可変関数は、$変数に関数名を格納して使うものだと理解していました。
もう少し、可変関数に関して調べてみます。 $db=getDb();
$opDB=$db->prepare('SELECT * FROM sample WHERE id=?');
$opDB->bindValue(1,$_GET['id'] ?:1);
このコードから質問お願いします。
2行目の id=? は、ワイルドカードのようなものですか?
3行目のbindValueの一つ目のパラメータの1は、何を指しているのでしょうか? 返答ありがとうございます。
id=? っていうのは、どういう働きをするコードなのでしょう
一つ目とか、bindValue(1,$_GET['id']);の、'1'です >>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;
}
だが、このケースでは、こんな書き方をしてはいけない。
(続く) (続き)
$_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;
}
このケースでエルビス演算子をこんな使い方するような糞コードは、あんまり参考にしない方がいい >>977も読んだが、エルビス演算子の使い方といい
いったい何を参考にしてこんなコードを書いてるんだろうか
もし本を参考にしてるなら焼き捨てた方がいいレベルで酷い
クイズ的に質問してるなら面白いけどw 演算子の説明だけだとシンプルで理解しやすいけど実用性ではクソ
実用性重視の説明だと本来説明したいもの以外の説明で蛇足だらけで
紙面使いすぎでクソ
というジレンマなんやろ $input = trim(fgets(STDIN));
while($input)
{
echo $input;
}
これってwhileの式のところでは$inputの中が空かって判断してるの?そういう機能がついてるのか? >>984
SELECT * FROM sample WHERE id=?
id=? は、placement。
? の所に、値が入る
SQL injection 対策
例えば、単純な文字列をつなげて、問い合わせると、
? が「1; DROP TABLE 何々」とか、クラッカーに入力されると、
「SELECT * FROM sample WHERE id=1; DROP TABLE 何々」のように、
; で、危険なSQL文をつなげてくる
placement で、SQL文をつなげられないようにしている >>991
そのコードだと、trim(fgets(STDIN))の値が (bool) true であった場合に永久ループになるw
実際は
while ($input = trim(fgets(STDIN))) {
echo $input;
}
こう書くべき処理なのでは? while分の中では$inputをbool型にして判定してるわけか? 空文字がFalse判定されることを利用して
空行入力で終わるようにしてるんだろうけど
ゼロとかもFalse判定されて終わっちゃうんじゃないか
試してないけど Ruby では、nil, false の偽が2つだけ。
一方、JavaScript, Python, PHP などは、偽が10個ぐらいあるから、超危険!
基本的に、Ruby 以外は、バグってどうしようもない >>987
ありがとうございました。プレイスホルダなのですね。
prepareでSQLを用いて、プレイスホルダを使うとき、
SQL文の中で、左から数えたプレイスホルダの順番を、
bindValueのカッコ内の数値で指定してバインドする、ということもわかりました。
?:や??:の解説もありがとうございました。
>>989
独習phpというテキストを使っています。
>>992
ありがとうございます。
prepareステートメントが悪意ある入力に対策しているとテキストにも書いてありました。
皆様、ありがとうとざいました。
今のテキストを読み終えたら、もう少しテキストを吟味して、違うテキストを探してみようと思います。 >>994
そういう事
ただ>>995,996の言う通りなので
while (($input = trim(fgets(STDIN))) !== false) {
echo $input;
}
こう書くのが正しい
(なんか前にも似たような事を書いた気がするw) すまんw 大嘘書いたww
>>998のコードだと trim() によって string型にキャストされるから永久ループするわwww
while (($input = fgets(STDIN)) !== false) {
echo $input;
}
が正しいが場合によっては
while (($input = trim(fgets(STDIN))) !== '') {
echo $input;
}
が期待した動作なのかもしれない このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 342日 23時間 9分 23秒 レス数が1000を超えています。これ以上書き込みはできません。