【PHP】Laravel【フレームワーク】 Part.3
■ このスレッドは過去ログ倉庫に格納されています
テンプレ追加修正お願いします
Laravel
ウェブ職人のためのPHPフレームワーク
本家
https://laravel.com/
git
https://github.com/laravel
動画チュートリアル(英語)
https://laracasts.com/
日本語
http://laravel.jp/
書籍
Laravel リファレンス[Ver.5.1 LTS 対応] Web職人好みの新世代PHPフレームワーク
Laravelエキスパート養成読本[モダンな開発を実現するPHPフレームワーク!] (Software Design plus)
※前スレ
【PHP】Laravel【フレームワーク】
https://medaka.5ch.net/test/read.cgi/php/1503683914/
【PHP】Laravel【フレームワーク】 Part.2
https://medaka.5ch.net/test/read.cgi/php/1556417229/
amazonへのリンクが邪魔をしてスレッドを建てられなかったので外しました。 レイアウト部分を共通化しようと思って@includeしてるんだけど
読み込んだファイルの@section~@endsection部分が
表示されないんだけど、何で??? 使い方間違ってるからだろ
なんでそんな質問が沸くのか逆に聞きたい 詳しい人教えてほしい。
view composerでサイドバーに表示する情報を一括でデータベースから取得してviewに渡してるんだけど、
例えばおんなじ情報を一部のコントローラーの処理でも使いたい時がある。
このときってサイドバー用にDBたたく処理と、コントローラー用にDBたたく処理が2つになって冗長になってしまうはずだけど、
どうやって対処すればいいんだろう?
そもそもview composerの使いどころを間違っているのか…? >>13
>>14
せっかく教えてもらってもよくわからん。モデルてEloquentのことよな。
もうすこし詳しく教えてくれないか
Eloquentにそういう処理を書いても何度もその処理を呼ぶならその都度DBアクセスが発生するんじゃ? 1. モデルに目的の処理を書いたメソッドを定義する
2. コントローラーからもview composerからもどこからでもそのメソッドを呼べば良いだけ
これでコードの重複は無くなるから冗長では無い
って思ったけどクエリの発行も一回にまとめたいってことか
1. Cacheを使う
例えばそのメソッド内で、サイドバーに表示する内容がキャッシュに存在していればキャッシュから取得、存在していなければDBから取得してキャッシュにも保存。
2. モデルの静的メンバに保存
考え方は1とほとんど同じだけど、cacheではなくモデルの静的メンバ変数に保存する。 例えばHogeモデルの場合
class Hoge
{
public static $menu = null;
public static function getMenu() {
if (!self::$menu) {
echo "initialize\n";
self::$menu = "side menu here\n";
}
return self::$menu;
}
}
echo Hoge::getMenu();
echo Hoge::getMenu();
出力結果:
initialize
side menu here
side menu here >>16
>>17
冗長って言い方が悪かったんだな。補ってくれた通り、クエリ発行数を減らしたかった。
サンプルコードまでありがとう。こんなやり方があるのか。メンバ変数もつみたいな感じか
laravelしてるといつの間にインスタンス化したのかわからんし、ここらへんの知識を押さえないとなー >>18
laravel以前にphpの言語仕様を理解していないだけでは? HTTPステータス429に悩まされている。
LaravelのAPI回数規制で429を返すらしいのだが、そのパラメータを緩和しても429だ。 >>20
緩和してもまだリクエスト数が上回っているのではなく?
ログ取るとかしてリクエスト数調べて見れば? blade分かりにくすぎない?
親ファイル基準で考えればいいのか子ファイル基準で考えればいいのかイマイチ分からないんだけど 日本語化が出来ない...
公式からjaフォルダー事持ってきたのに何故かenの方のエラーメッセージが表示される >>26
どうおかしいんだ?
https://i.imgur.com/bdYtoFE.png
You should fill the name field. は
ContactRequestで指定しているから違うよな
この画面で正しいのか知らんけど、artisanでviewとconfigのキャッシュクリアしてみたら? >>27
✕ 指定しているから違うよな
○ 指定しているから意図したメッセージだよな >>28
,27
,25
すまんphp artisan config:clearをしたら表示された!!
cacheはクリアーしてたけど違うのもクリアしないといけないんだな...
不慣れだから手こずったわ
thanks >>21
kernel.phpのデフォルト 'throttle:60,1', (1分間60リクエスト)を
9999にしても429エラーが出るのだ。
Laravel関係なくて、nginxが出してんのかね。 いやさすがにLaravelが出してるのかnginxが出してるのかくらい分かるだろ、てか分かれよw
ちなみにthrottleが有効だとレスポンスヘッダに
x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset を出してくれるからそこ見たらなにか分かるかもね。
https://i.imgur.com/AnjmG94.png
あとLaravelがエラー吐く時はapp/Exceptions/Hander の render() メソッド通るからそこで例外だしたりログとってみれば? >>32
結局、429出なくなった。
file_get_contentsしていた箇所をcurlに置き換えただけで。
しかし、Laravelには関わりたくねーな。
ベトナム辺りに流すとLaravel使いたがるので困る。 いやー俺もSpringBoot軽く齧ってlaravelに逃げてきたけどマジで分かりやすい
一々フォームの検証でエラーがあった時に元のページにリターンするアトリビュートを指定したりしなくていいとか便利 >>33
いや、apiにfile_get_contentsは無いだろw
つうかfile_get_contentsだとまだ429が出るってことかよw >>36
出る。
curlでkeep aliveしてるって訳でもないので、Laravelのthrottleは関係ねえな。 >>33
じゃあcakeがいい?そんなの使うの老害くらいでしょ >>31
laravelがエラー出してるのかそうでないのかなんてログ取れば一瞬で分かるだろうに…
その程度の頭でlaravelとは関わりたくないと。
こういう人がオレオレフレームワークとか書いたりしてるのかな。 外注選定でここ数年Laravelばかりやってる奴はまずNGにする。
Laravelでしか物を作れないから。
とか書くと「俺は違う」という奴が出てくるが、とにかく問答無用でNG。 簡単すぎるからでは?昔っから初心者はRailsから入るなCをやれみたいな原理主義者は居たし それ言ったらフレームワーク全般に言えない?
laravelであることを特定できない >>44
Laravelでしか物を作れないって言っただろ?
こういう外注はLaravelをやりこんでいるので他の技術がおろそかになっている
例えば組み込みのファームウェア製作とかできないだろ? >>50
javaも駄目
こういう外注はどうせSpring Bootばっかりやっていて
いざSpring Framework案件になったら全く何もできなくなる
今までこいつらができていたのは開発者が設定すべき内容を
Spring Bootが自動でやってくれていたからに過ぎない SpringBootとSpringって似て非なるものじゃないっけ? SpringBootで思い出したけど
LaravelBootって開発中止しちゃったのかな
SpringBootと同じような感じでコーディングできるLaravelを作るって
意気込んでいたけど とりあえずこういう人とは一緒に働きたくないてのはわかる
外注さんにも選ぶ権利はある LaravelやSpringBootは駄目でSpringは良いの?
自動でやってくれるってのは駄目ってのを突き詰めていくと、
apacheやnginxを使わないでサーバーソフトウェアは自作しろとはならないのかな?
CentOS使わないで自作しろとか、高級言語使わないでアセンブラで作れとはならないのかな? Laravel信者ホイホイか、ここは。
まぁ、どこぞのエージェント経由の面談で「Laravelなら任せてください!」と張り切ると
逆効果な場合もあるってことだ。 あほなの?
なんで組み込み任せるやつ探すのに、webのフルスタックエンジニア紹介させるんだよw
組み込みやってるやつ紹介するように依頼しろ。
で、そんなやつはスレチだわ。 職人は意識高い系嫌いだろうけどどっちもプライドはクソほど高いよね 今、掌田本の実践開発編読んでるけど意外と知らない事も多いな ストレージ関係の細かい事やらサービスとファザードの事やらイベント、スケジューラーやら
あとDBまわりだとついついrawで書いちゃうところを実はもっとちゃんとした書き方あったのかっていうのとか
知らなくても代替でどうにかなるような事だけどこれ使った方がスマートなつくりにできるんだろうなって感じ
まぁ公式ドキュメント全部読めば済む話ではあるんだけど使う機能の部分しかちゃんと読んでなかったんだよね 現状PHPはLaravel使うかSymfony使うの2択だな
CodeIgniterはいいのかね? Laravelって部分的にSymfonyが使われてるとかよく言われてるけどSymfonyを知っておいた方がLaravelの深い部分を知る上で有利な事って何かある? >>63
CodeIgniterはMVC的に管理はしたいけど、学習コストかけたくないって時期に便利に使ってた。
ほとんど素のphpで動くんで、学習は楽だったけど、いまさら使おうとは思わんかなぁ。
4が開発中みたいだけど、どうなんだろ。 Laravelを勉強するにあたって2020年現在一番おすすめの
チュートリアルってありますか? Laravel界隈っていうかここだけだと思うけどね でもPHPフレームワークはLaravelが最強だよ 古いマイグレーションファイルって消していいの?まだよく分かってないんだけどphp artisan magrateしたら最深のマイグレーションファイルが実行されるの? 消しちゃいかん
なんのためにup()とは別にdown()があるのか考えよう 君のように趣味で一人でやってる分には消していいかもね。
普通は消さないけど。 マニュアルにも書いてあるから、疑問に思うならまずマニュアルを読んだほうがいいと思うよ。
https://readouble.com/laravel/6.x/ja/migrations.html
> マイグレーションとはデータベースのバージョンコントロールのような機能です。アプリケーションデータベースのスキーマの更新をチームで共有できるようにしてくれます。
> もしあなたが今まで、チームメイトに彼らのローカルデータベーススキーマに手作業でカラムを追加するよう依頼したことがあるなら、データベースマイグレーションは、そうした問題を解決してくれます。 やるとしたら枯れたとこまでをリファクタリング目的で整理するくらいだな
ただまあスキーマ確認ならDBをプロットする方が確実だし普通は放置 マイグレーション機能をなくすなくさないで頻繁に
Laravelコミッターが議論してるし将来的にはなくなるかもね 俺もマイグレーションファイル消す派だったけどお前ら残してるの? リポジトリに残してあるなら消してもいいけど
環境再構築とかするときにないと困ることもあるかと思うぞ マイグレーションファイルを消してる人は環境の再構築や共有をどうやってるの? カラムぐらい自分で作れ。
フレームワークごときにDBを支配させるな。 >>86
定義書見ながら環境構築用のクエリを自分で書けって意味? コードの履歴とDBの履歴は一致させておきたい
別々に管理するとDB変更のデプロイ漏れ多いんだよ いきなりリソースコントローラーでstoreしてredirectで同じクラス内のindexメソッドに移行してview表示すると404になるようになった
デバッグ環境構築してやってみるとuncaughtなfatal errorで流れ掴めん
controllerがMyResourceCntrollerのextends Controllerされてる行で見つからないと表示される
どうすればいいですか うわごめんredirectで違うアクションメソッドに行けると思ってたw
解決です アクションメソッドからアクションメソッドにwith()で指定出来るようなセッションを持たせて推移させるにはどうすればいい?
出来ない?
storeからindexに移らせたいんだけど
web.phpに書かないといけないのかね
そもそも再利用性と過疎結合の丁度いい塩梅が分からない >>92
コントローラーからコントローラーにセッションを持って移行したい場合一々web.php通らないといけないの? >>91
めっちゃ頭悪そう
まずアクションメソッドって何だよ、コントローラーアクションだろ。
storeとかindexってなんだよ、コントローラーのメソッドAとメソッドBだろ。
web.phpってなんだよ、ルーティング定義ファイルだろ。
つーか設計がおかしいんじゃ?って点に触れなければ、普通にそのstoreメソッドのしかるべきタイミングで$this->index()でメソッド呼べばいいんじゃないか? Sessionファサード使えばコントローラー云々とかルーター云々とか一切気にする必要ないけど >>95
これだわ
flash関数を使えば良いんだな
助かる Facade警察の話はもう語り尽くされただろ
使い方次第で良薬にも劇薬にもなる まぁ寧ろbladeが要らん気もするけどね
表示部は全部フロントフレームワークでいい気がする 俺もLaravelはapiサーバにしておいて
描画はVueだな Laradockでプロジェクト作りたいんだけどgit cloneでLaradockを持ってくるパターンとLaravel学習帳のようにgit submoduleで持ってくるパターンがある
gitについては基本的なことしか分かってなくてどっちがいいのか分からない スレチだが教えてあげると
まず、「git clone とは何か」「git submoduleとは何か」を理解することから始めろ
この話においてLaradockは関係ない Laravel Framework 6.16.0 です。
class SampleController extends Controller
{
protected $componentService;
public function __construct(ComponentService $componentService)
{
$this->componentService = $componentService;
}
と書いただけで、ComponentService がインジェクションされてます。
サービスプロバイダを作成したり、app.phpに登録とかしなくても、です。
デフォルトでコンストラクタインジェクションされるんですか?
サービスプロバイダの意味がいまいち分からなくなってます。 そもそもComponentServiceクラスって何よ? ■ このスレッドは過去ログ倉庫に格納されています