Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Laravelワカンネ(゚⊿゚)から「完全に理解した()」までステップアップ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
namizatork
January 22, 2020
Programming
1
1.2k
Laravelワカンネ(゚⊿゚)から「完全に理解した()」までステップアップ
2019.1.22 大阪Laravel勉強会主催
namizatork
January 22, 2020
Tweet
Share
More Decks by namizatork
See All by namizatork
PHPのエラーを理解して適切なエラーハンドリングを学ぼう
namizatork
2
3.9k
もう細かいレビューは したくない、されたくない
namizatork
1
1.4k
PHPの静的解析 ついでにLarastan
namizatork
1
600
Laravel8.xまでの大きな変更点を振り返る
namizatork
0
540
Livewireは魔法??コードリーディング してみた
namizatork
1
360
Laravelの「Hello World」を 表示するまでの処理を追ってみた
namizatork
0
1.4k
Laravel Hands-on
namizatork
0
370
SPA/PWA/AMPってなに?
namizatork
1
17k
Other Decks in Programming
See All in Programming
Fragmented Architectures
denyspoltorak
0
140
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.6k
SourceGeneratorのススメ
htkym
0
160
AtCoder Conference 2025
shindannin
0
1k
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
130
CSC307 Lecture 05
javiergs
PRO
0
490
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
170
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
gunshi
kazupon
1
140
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
620
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
190
Architectural Extensions
denyspoltorak
0
250
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
280
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.6k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
210
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
110
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Code Reviewing Like a Champion
maltzj
527
40k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
90
Believing is Seeing
oripsolob
1
44
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
600
Transcript
⼤阪Laravel勉強会 # ⼤阪Laravel勉強会 でツイート 登壇(15min) Laravelワカンネ(゚⊿゚)から「完全に理解した()」までス テップアップ LaravelとSymfony Laravel5 と
Laravel6 の違い -認証編- LT(5min) LaravelでSNSログインを実装 LaravelのコアコードからMiddlewareとControllerの実 ⾏⼿順を理解する MySQLと⽂字コードの話 故Laravel4でやっていく時のTips Amazon LightsailにLaravel環境作ってみた
Laravelワカンネ(゚⊿゚)から 「完全に理解した()」までステップアップ Namizato
エンジニアの「完全に理解した()」 ⾃信 理解度 完全に理解した なんも分からん チョットワカル
以上。 前ページ踏まえた上でご視聴ください。
⾃⼰紹介 Laravelのライフサイクル Laravelでよく⽬にするやつ
Namizato @namizatop Work : サーバーサイド Like : ⽝ バスケ Age
: 25 Laravelコミュニティ参加⾃由です
Laravelのライフサイクル
Laravelをwebに公開する時、 publicフォルダのみを公開 フォルダとします。 そこに存在するCSS・JS等 以外のファイルへのアクセ スは全てindex.phpを通して、 実⾏されます。 公開フォルダ
HTTPカーネル http://laravel 1 エントリポイント ルーティング ミドルウェア コントローラー 2 3 4
5 6 7 実⾏フロー
オートロードファイルの読み込み フレームワークの起動 アプリケーション実⾏ HTTPレスポンス送信 終了処理 エントリポイント
通常のPHPでは別のPHP ファイルを参照する際、 require⽂を読み込む必要が ありますが、Laravelでは ファイルの上部でuse宣⾔す ると⾃動でそれらのファイ ル郡を⾃動で読み込んで使 ⽤できます。 オートロード
Laravelの根幹とも⾔えるApplicationイ ンスタンスを⽣成します。 このApplicationインスタンスでは Laravelの様々な機能を提供する部品を 管理しており、Laravelではサービスコ ンテナと呼んでいます。 ここではHTTPカーネル/Consoleカー ネル/エラーハンドラーをsingletonでバ インドしてindex.php(エンドポイント) に返します。
※サービスコンテナは別ページで説明します。 アプリケーション実⾏
前ページでsingletonを利⽤してバイン ドしたHTTPカーネルの⼀例です。 HTTPカーネルではリクエストの実⾏前 に処理される機能(CSRFや認証など) を配列($middleware)で定義します。 ここで定義した処理はRequestインスタ ンスに対して必ず実⾏されます。 また、任意で処理を追加、削除が可能 です。 ※定義した処理はミドルウェアで実⾏されます。
HTTPカーネル
特定のURL (http://laravel/◦◦◦)に対して どの処理を呼び出して実⾏するのか を管理するのがルーティングです。 図①では/homeにアクセスされた時 に図②の`HomeController`クラスの `index`メソッドを呼び出しています。 ルーティング http://laravel/home 1
2
ミドルウェアとはRequestに対して(つまり Laravelアプリケーション全体)フィルタリン グをする機能の事です。 例えば右の図の様にログイン機能を追加しよう と思った時にそれぞれのコントローラーで認証 ロジックを書くのは⼤変です。 その処理をコントローラーとは別に実⾏する仕 組みを⽤意したものになります。 右の図の様にミドルウェア->コントローラー を通った後に再度ミドルウェアに戻っている様
にコントローラーの前後どちらでも設定が可能 です。 ※認証ロジックだけでなくCSRFトークンのチェックなど 様々な処理が初期設定で存在します。 ミドルウェア ミドルウェア コントローラー 5 6 ~~~~~~省略~~~~~~ ログイン ここで認証ロジック など ʻʻ実⾏フローから引⽤ʼʼ
LaravelはMVCフレームワークです。 ControllerはModelとViewの制御を ⾏う中⼼となる部分です。 右の図の様にLaravelのControllerは 通常、Controllerクラスを継承してい ます。 継承せずともControllerとして機能し ますが、前ページで説明した、ミド ルウェアへのアクセスが出来なくな ります。
コントローラー
Laravelでよく⽬にするやつ
DIとはオブジェクト同⼠の 依存をなくして疎結合にし ようという考え⽅です。 右の図では`User`クラスは `Phone`クラスに依存して います。 このままでは`User`クラス の単体テストができません。 DI(依存性の注⼊) Phoneクラスに依存している
右の図ではresolve()という関数にク ラス名を渡しています。 この記述をする事で、外部でインス タンス⽣成を⾏い、疎結合にしたと いう事になります。 これにより`Phone`クラスのモック を与えた`User`クラスの単体テスト が可能になりました。 では外部からインスタンスを⽣成す るとはどういう事か次ページで追っ
てみます。 DI(依存性の注⼊) Phoneクラスに依存していない
サービスコンテナとはアプリケーショ ン全体のインスタンスを管理する機能 の事です。 前ページで紹介したresolve()はグロー バル関数として使⽤でき、クラス名を 渡すと該当のクラスのインスタンスを リターンする事ができます。 resolve()は説明するためにあえて使い ましたが、メソッドに直接クラス名を 渡すと⾃動で同様にインスタンスを外
部から注⼊する事ができるメソッドイ ンジェクションがよく使われます。 サービスコンテナ サービスコンテナ インスタンス⽣成し てくだぱい あいよ (インスタンスを渡す)
ご静聴ありがとうございました。 Namizato