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
ken
March 17, 2021
Programming
0
98
Laravelに入門してみた
ken
March 17, 2021
Tweet
Share
More Decks by ken
See All by ken
リリース済にも関わらず何のドキュメントもなかったシステムの仕様書を書いてみた話
segamiken
0
100
Accessibilityに興味が出てきた話
segamiken
0
100
Other Decks in Programming
See All in Programming
バイブスあるコーディングで ~PHP~ 便利ツールをつくるプラクティス
uzulla
1
330
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
3
2.1k
自作OSでDOOMを動かしてみた
zakki0925224
1
1.3k
Go製CLIツールをnpmで配布するには
syumai
2
1.2k
サイトを作ったらNFCタグキーホルダーを爆速で作れ!
yuukis
0
180
一人でAIプロダクトを作るための工夫 〜技術選定・開発プロセス編〜 / I want AI to work harder
rkaga
12
2.5k
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
150
Infer入門
riru
4
1.4k
あまり知られていない MCP 仕様たち / MCP specifications that aren’t widely known
ktr_0731
0
240
マイコンでもRustのtestがしたい その2/KernelVM Tokyo 18
tnishinaga
2
2k
バイブコーディング × 設計思考
nogu66
0
110
MCP連携で加速するAI駆動開発/mcp integration accelerates ai-driven-development
bpstudy
0
290
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
How STYLIGHT went responsive
nonsquared
100
5.7k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
GraphQLとの向き合い方2022年版
quramy
49
14k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Music & Morning Musume
bryan
46
6.7k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Transcript
Laravel に入門してみた ken Laravel のライフサイクルについて サービスコンテナについて サービスプロバイダについて ファサードについて ファサードを使用するメリット
Laravel のライフサイクルについて 1. public/index.php が読み込まれる $app = require_once __DIR__.‘/../bootstrap/app.php’; 2.
bootstrap/app.php が読み込まれる $app = new Illuminate\Foundation\Application( $_ENV[‘APP_BASE_PATH’] ?? dirname(__DIR__) ); return $app; 3. Illuminate\Foundation\Application クラスで色々としてる。これが サービスコンテナで、依存関係を解決している
サービスコンテナについて サービスコンテナはクラス間の依存性を管理する為の仕組み。依存 性の注入を行うDI コンテナにあたるもの これを使わないと、様々な箇所で new クラス名 して様々な依存が存 在する状態になる サービスプロバイダ等で使用している
$this->app は Illiminate\Foundation\Application クラスのインスタンスである。 このクラスがサービスコンテナ $this->app->bind('sender', 'MailSender'); このように書くとサー ビスコンテナにbind() メソッドでキー名にクラスを紐付けて登録す ることができる。これらをサービスプロバイダに書く
サービスプロバイダについて サービスプロバイダは、データベース、キュー、バリデーションな ど、フレームワークのさまざまなコンポーネントすべてを初期起動 する責務を持っている 初期起動とはサービスコンテナの結合や、イベントリスナ、フィ ルター、それにルートなどを登録すること register メソッドの中ではサービスコンテナへの登録だけを行 う、つまりサービスコンテナに何かを結合する処理を書く。 boot()
では、そのサービス固有の初期処理を自由に実装できる 大規模アプリケーションの場合、アプリケーションで使用するサ ービスに対して、それぞれがよりきめ細かい初期処理を備えた複 数のサービスプロバイダを作成すると良い
ファサードについて ファサードは以下の様に使用する。Route ファサードを使用する例で す。 Route::get('/', 'WelcomeController@index'); 一見するとRoute クラスのstatic メソッドであるget() を実行しているよ
うに見えるが、実は、Illuminate\Routing\Router のインスタンスの get() が実行されている getFacadeAccessor() メソッドを実装し、ここでサービスコンテナにバ インドしてあるキー名を返している
ファサードを使用するメリット 依存性注入の1 つの方法である サービスコンテナを介してインスタンスにアクセスする為、オブジ ェクトをシングルトンとして登録できる 毎回クラスをnew するのに比べて、メモリー効率、パフォーマンス 効率が上がる サービスコンテナを介してインスタンスにアクセスする為、テスト を記述する時に、モックに入替えることが出来る