のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:126,369,238人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ【PHP】Laravel【フレームワーク】 Part.6

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    451 : nobodyさん - 2021/06/14(月) 00:06:05.58 ID:???.net (+40,+30,-90)
    >>444-446
    小さいころ数人でワイワイ砂場で遊んでたら知らない男の子が後から入ってきたからその子も含めてみんなで遊んでると
    他の子が作った山とかを壊したり100万円持ってるとか意味わからん嘘ついたりを「やめて」って何回言ってもやる子だったから
    またその子が砂場に来た段階でみんなで別の遊具に移動するようになって
    誰もいない砂場でごく短時間だけ「楽しいなー」みたいなこと言いながら遊んでた「あの子」を思い出すからやめて・・・
    452 : nobodyさん - 2021/06/14(月) 00:30:02.01 ID:???.net (+32,+29,-4)
    >>451
    長い上に意味不明で読んで損した
    453 : nobodyさん - 2021/06/14(月) 00:41:42.72 ID:???.net (+27,+29,-43)
    未だにバッチ処理とか組んでる老害居るのかよ
    .envをコミットしてるガイジまで居るしとんでもない動物園だこりゃ
    454 : nobodyさん - 2021/06/14(月) 00:55:03.51 ID:???.net (+31,+29,-14)
    >>449
    他も分からん方が多いわw
    455 : nobodyさん - 2021/06/14(月) 00:58:23.56 ID:???.net (+33,+29,-3)
    >>450
    頭の中がおじいちゃんなのよ…
    あまり責めないで
    456 : nobodyさん - 2021/06/14(月) 01:16:21.42 ID:???.net (+17,+29,-13)
    零細vs老害
    457 : nobodyさん - 2021/06/14(月) 02:11:20.10 ID:???.net (+35,+29,-62)
    >>450
    想定会員数と用途とか情報が足りてないから想定可能なボトルネックは「ある」ものとして設計しなきゃならないと思うから
    100万会員/dayで運用開始から現在までって仕様だった場合、どこかで破綻するでしょ
    458 : nobodyさん - 2021/06/14(月) 06:20:56.93 ID:???.net (+33,+29,-12)
    >>451
    幼児特有の「アレ」な
    幼児特有?w
    459 : nobodyさん - 2021/06/14(月) 06:48:03.41 ID:???.net (+41,+28,-52)
    >>450
    例えば自由に停止再開できる有料サービスを契約している会員数もCSVに載せることになった場合でもそうする?
    460 : nobodyさん - 2021/06/14(月) 06:57:35.05 ID:???.net (-27,-29,-16)
    >>457
    100万会員/dayの場合OSSのDBで扱えないだろうし言語にPHPを選ばないと思う
    461 : nobodyさん - 2021/06/14(月) 08:05:08.93 ID:???.net (-22,-26,-8)
    100万会員、何? 登録? アクセス?
    462 : nobodyさん - 2021/06/14(月) 08:16:03.69 ID:???.net (-24,-26,-27)
    毎日100万会員増えるサービスってどんなんや?
    100万DAUのサービスならPHP/MySQLのもある、ソシャゲとか結構PHPだし俺も昔モバゲーのゲームをCakeで作った
    463 : nobodyさん - 2021/06/14(月) 08:16:05.43 ID:???.net (+24,+29,-1)
    >>461
    注射打つ回数に決まってんだろ!
    464 : nobodyさん - 2021/06/14(月) 08:23:14.20 ID:???.net (+27,+29,-9)
    グラブルがPHPらしいしPHPで出来ないサービスなんて殆ど無いやろな
    466 : nobodyさん - 2021/06/14(月) 08:38:56.36 ID:???.net (+33,+29,-11)
    >>448
    何論点ずらしてるのこの人
    467 : nobodyさん - 2021/06/14(月) 08:45:22.50 ID:???.net (+19,+21,-18)
    むしろPHPよりはボトルネックになるのはDBの方じゃないかな?
    468 : nobodyさん - 2021/06/14(月) 08:48:42.34 ID:???.net (+32,+29,+0)
    それより>>459どうするのか気になる
    469 : nobodyさん - 2021/06/14(月) 09:02:27.24 ID:???.net (+23,+20,-5)
    >>459
    だからそれも同じ
    出力時に計算してCSVに出せばいいだろ
    470 : nobodyさん - 2021/06/14(月) 09:22:28.65 ID:???.net (+16,+21,-46)
    >>462
    会員数としか明記されてないので
    例えばアプリのインストールやログインとかのレポートなんかを提供するマーケティングツールをイメージした
    471 : nobodyさん - 2021/06/14(月) 09:23:29.71 ID:???.net (-11,-29,-147)
    バリデーションをモデルでやるのってそんなにおかしいか?
    データはDBのテーブルに保存されるんだからバリデーションはそれに合わせるべきでしょ
    ユーザーIDなんかはカラムにユニーク制約付けて、Laravelのバリデーションでcreate時にユニークチェックする
    必須項目はNULL不許可にしてバリデーションでrequired
    数値はint型のカラムにしてバリデーションでnumericまたはinteger
    みたいになるだろ
    テーブルに紐付いたり一番近いのはモデルなんだからカラムの属性はモデルにまとめて書くべき
    普通fillableまたはguardedを指定すると思うけど同じようにrulesも書いとけばいいんだよ
    コントローラーやコマンドはそれを呼び出して使えばいい
    472 : nobodyさん - 2021/06/14(月) 09:42:51.12 ID:???.net (+29,+29,-27)
    >>471
    DBに投入するデータと入力データはかならずしも一致しない
    例えば、パスワードなんてハッシュされてしまう
    473 : nobodyさん - 2021/06/14(月) 09:43:49.79 ID:???.net (+30,+29,-14)
    >>471
    おかしくないと思うしあってもいいと思うけど
    ユーザー属性によってバリデーションルールが変化するサービスの場合はどうするって問題が出てくるでしょ
    474 : nobodyさん - 2021/06/14(月) 09:47:30.70 ID:???.net (+37,+29,-28)
    >>472
    完全一致する必要はない、むしろ普通は完全一致しない
    けどバリデーションされる情報ってだいたいテーブルに紐付く情報だろ、多少の例外はあってもそこは無視できんだろ
    475 : nobodyさん - 2021/06/14(月) 09:50:14.64 ID:???.net (+37,+29,-36)
    >>473
    そんなのどうにでもなるじゃん
    Laravelのバリデーションルールにはいくらでも複雑な条件書けるぞ、足りなければルール自作すればいい
    動的に変化する条件も書けるぞ
    476 : nobodyさん - 2021/06/14(月) 09:51:47.66 ID:???.net (+38,+29,-24)
    >>474
    それ言い出したら、フロントに一番近いとこでやっても変わらんだろ
    多少の例外があっても、基本的にフロントから来たデータをバリデーションすんだろ?
    そこを議論してもしょうがないんだよ
    477 : nobodyさん - 2021/06/14(月) 10:01:29.38 ID:???.net (+43,+30,-60)
    >>476
    ・フロントから来たデータをバリデーションする
    ・DBに入るデータをバリデーションする
    この考え方の違いか、俺はずっと後者だったから前者の考え方はこのスレの議論で初めて知った
    バリデーションは何のために必要か?と言うとDBに不正なデータを渡さないためだから、後者の方がしっくり来るけど
    478 : nobodyさん - 2021/06/14(月) 10:03:24.32 ID:???.net (+31,+29,-71)
    >>471
    Laravelが提供している標準を無視して、そんなオレオレ実装にこだわる理由がわからん。どうしてもモデルでやりたいなら、cakePHPやRails使えば良いのでは?
    479 : nobodyさん - 2021/06/14(月) 10:11:49.31 ID:???.net (+42,+30,-133)
    >>477
    それは「なんちゃってMVC」しか知らないからだね。元々MVCは、入力値のチェックをコントローラーの責務としている。
    俺はどっちでも良いと思ってるから、その仕組みが提供しているほうに合わせるべきだと思う。それをせずにわざわざ仕組みを変えようとして無駄に工数を使うやつは、仕事ができないやつだと思う。
    極論、作るシステムのステークホルダー(エンジニアの除く)にとって、バリデーションがどこで行われているかはそのシステムの価値を決める上で一切関係が無い。
    480 : nobodyさん - 2021/06/14(月) 10:18:25.16 ID:???.net (+32,+29,-46)
    >>478
    標準を無視してオレオレ実装にこだわっているわけではない。
    モデルに書くのも一理あるでしょ?って言ってるだけ。俺だってFormRequestのバリデーションも使うし。
    481 : nobodyさん - 2021/06/14(月) 10:25:50.03 ID:???.net (-18,-30,-135)
    >>479
    なんちゃってMVCで作ってるのはわかっている。本来のMVCでないとダメなんて思ってないし。
    Laravelが提供してる方法ってFormRequestのバリデーションのことだろうけど、
    モデルに書いてもあまり手間変わらないよ。
    そもそも公式の例ではコントローラーにバリデーション書いてる。その
    [
    'title' => ['required', 'unique:posts', 'max:255'],
    'body' => ['required'],
    ]
    なんかの部分を、モデルに持って行くだけだよ。コントローラーでは
    $request->validate(SomeModel::getRules());
    のように使う。こうすれば他のコントローラーからも同じように使える。条件によってルールが変わる時は引数で指定する。
    482 : nobodyさん - 2021/06/14(月) 10:26:59.67 ID:???.net (+38,+29,-51)
    あのさぁ、アプリの基本って、入口と出口を固める事なのな。
    バリデーションは入口、エスケープは出口。

    どうしてModelみたいな真ん中でバリデーションしようとする?
    こんな基本的な事言わんとわからんの?
    483 : nobodyさん - 2021/06/14(月) 10:29:11.16 ID:???.net (+38,+30,-85)
    >>479
    >極論、作るシステムのステークホルダー(エンジニアの除く)にとって、バリデーションがどこで行われているかはそのシステムの価値を決める上で一切関係が無い。

    わかりやすい所に書かれていたり、うまいこと共通化できる所はしてある方が
    バグの可能性が減って価値が上がるよ。
    484 : nobodyさん - 2021/06/14(月) 10:31:56.43 ID:???.net (+43,+29,-27)
    >>482
    真ん中じゃないじゃん。
    モデルはデータに紐付くもので、データの入口と考える。
    もちろんこれが唯一の正解じゃないから、本来のMVCがとかお前のMVCがどうとかは知らん。
    485 : nobodyさん - 2021/06/14(月) 10:33:37.04 ID:???.net (+32,+29,-52)
    DB投入値の担保は、モデルの引数に型宣言かませばいい
    http://speakerdeck.com/twada/php-conference-2016-original?slide=35
    これで「出来ていいこと」が明確になる
    486 : nobodyさん - 2021/06/14(月) 10:40:00.83 ID:???.net (+38,+29,-41)
    >>475
    実際に書いて試した事ないでしょ?
    やったらわかるけどartisanコマンドの時にどうすんのこれってなるから
    一つにまとめる事がダメって訳じゃないけど分岐していくやり方は
    見通し悪くなるってのと分岐が増えると結合度が上がってどんどん変更に弱くなると思ってる
    487 : nobodyさん - 2021/06/14(月) 10:45:28.78 ID:65mpymBy.net (+36,+30,-218)
    >>484

    ごめん、頭の悪い子と話すの疲れるんだけどさ、

    お前が作ってるの、一体何だ? バラの部品を複数作ってるのか?
    何でアプリ全体で見ないで部品単位で見てるんだよ?

    空港降りたら検疫して、駅に入る前に検疫して、電車に乗る前に検疫して、県境越えたら検疫して、電車に乗る前に検疫して、バスに乗る前に検疫して、宿に入る前に検疫して…

    なんてやると思うか? 国に入ってきた時に一回だけだろ。
    最初に1回きっちり検疫すればその後、どんなところを通ろうが関係ないだろ。効率って物を考えろよ。

    というか、モデルはデータの入り口って、本物のバカなの?
    RDBに対してデータを“出力”する場所だろ。だからエスケープが必要になる。
    お前マジで、安全なアプリケーションの作り方とか、全く勉強してないだろ?
    488 : nobodyさん - 2021/06/14(月) 10:47:59.90 ID:???.net (-24,-30,-65)
    DBがモデルに一番近いからそこでバリデーションするって言い張る人に聞きたいんだけど

    例えば携帯電話番号の入力フォームでは以下の入力を受け付ける
    「09012341234」
    「090-1234-1234」
    「09001231234」
    「090-0123-1234」

    DBに格納すれる値は正規化して以下の通り
    「09012341234」

    って要件を実現するのにどうやってるの?
    先に正規化してからバリデーションしてるわけ?
    489 : nobodyさん - 2021/06/14(月) 10:59:57.74 ID:???.net (+38,+26,-54)
    >>484

    あと、もう一個言うとさ、
    おまえのアプリではModelは常に1つなの?
    Modelファイルが複数ある場合、どこでバリデーションするって言ってる?
    流石に、各Modelでそれぞれバリデーションするとか言わないだろ?
    じゃあ、どこ? 復数のModelの前?
    そこはModelじゃなくて、つまりControllerじゃん。
    491 : nobodyさん - 2021/06/14(月) 11:13:15.18 ID:???.net (+30,+29,-19)
    >>488
    自分で答え書いてるじゃん
    ユーザーの入力とDBに格納する形式が違うなら、
    先にユーザーの入力値を整形した上でバリデーションしたらいいだけ
    492 : nobodyさん - 2021/06/14(月) 11:17:35.38 ID:65mpymBy.net (+33,+30,-75)
    ちなみに、ネットの多数派の意見はどうなんだい?と思って検索してみて最初に出てきたのが、これで、
    心の底から脱力した。

    http://blog.64p.org/entry/2013/11/26/131914
    『言いたいことは「結局、昔はサーバサイドで懇切丁寧なエラーメッセージを出すためにModelではなくControllerでバリデーションに関する知識が必要だったけど 今はJavaScriptでやるから不要だよね111」ってことです。』

    そういう事してるから、フロントとサーバーサイドでバリデーションルールが違うみたいな事が発生してくるんだろ。
    493 : nobodyさん - 2021/06/14(月) 11:21:34.06 ID:65mpymBy.net (+32,+29,-81)
    実際、俺がいじるわけじゃないからどこでバリデーションしようとそいつの勝手ではあるんだけどさ、
    どこでも同じバリデーションが使えるような実装じゃないと、メンテ大変だろ?

    で、この話って元々なんだったんだっけ?
    494 : nobodyさん - 2021/06/14(月) 11:23:12.90 ID:???.net (+33,+29,-16)
    ageてるやつの能書きがキモいって話題
    引きこもりは出てくんなよ
    495 : nobodyさん - 2021/06/14(月) 11:24:29.11 ID:???.net (-16,-29,-109)
    バリデーションはデータの受け渡しが発生するたびに行う
    1.入力時にJavascriptでチェック
    2.フォームがPOSTされるときにバックエンド側でチェック
    3.バッチ処理が走るときにチェック
    4.ビジネスロジックが走るときにチェック
    5.CSVとして出力するときにチェック

    少なくとも入力されてからCSVとして出力されるまで5回はチェックされる
    なんらかのロジックが走るたびにチェックされるから実際は何十回もする
    496 : nobodyさん - 2021/06/14(月) 11:29:30.70 ID:???.net (+37,+29,-24)
    >>491
    いやおかしいだろ
    そしたらパスワードもハッシュしてからバリデーションすんのか?
    498 : nobodyさん - 2021/06/14(月) 11:35:31.83 ID:65mpymBy.net (+32,+29,-17)
    >>494

    まーた頭おかしいの湧いてきたし。

    内容に関係ないことで頭に血を上らせて、おまえ、脳に障害でもあんのか?
    499 : nobodyさん - 2021/06/14(月) 11:37:13.01 ID:???.net (+40,+29,-56)
    >>489
    >>481にコードも書いたからよく見てくれ
    俺が提案してるのは、コントローラー(FormRequestでもいいけど)でバリデーションする際、ルールはモデルに書いてあるのを参照するって事だ
    Laravel公式のやり方のほんの一箇所変えてるだけなんだよ
    その方が使い回しとかメンテしやすくていいじゃない?って言ってる
    500 : nobodyさん - 2021/06/14(月) 11:38:52.46 ID:???.net (+22,+29,-6)
    月曜の朝から熱いねおっさんなのに
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について