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
takumin
April 25, 2024
0
720
Laravelのサービスコンテナを知ろう
春和の候!若手エンジニアふんわりLT Night!
でのLT資料です。
takumin
April 25, 2024
Tweet
Share
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
32
1.5k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Building Applications with DynamoDB
mza
90
6.1k
What's new in Ruby 2.0
geeforr
343
31k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Transcript
Laravelのサービスコンテナを 知ろう
自己紹介 村上拓海(たくみん) @Ota_Rg_Blog 株式会社ROXX back check事業部開発 LaravelとNuxt.js 男子新体操やってます
サービスコンテナとは > Laravelサービスコンテナは、クラスの依存関係を管理し、依存注入を実行するための強力なツールです。 依存の注入は、本質的にこれを意味する派手なフレーズです。クラスの依存は、コンストラクターまたは場合 によっては「セッター」メソッドを介してクラスに「注入」されます。 要するに ・クラスの依存関係を管理できる箱 ・DIコンテナ
DI(Dependency Injection=依存性注入)とは 依存とは、あるオブジェクトの中で他のオブジェクトの機能を使うこと DI(Dependency Injection=依存性注入) とは、 他のオブジェクトを使用する時に、自身の中ではなく 外から設定してあげる事で、 よりスムーズなソース管理や処理の流れを実現する デザインパターンの事です。
依存関係がある例 MyClassの中でEmailクラスを作成している ・Emailではなく、Gmailを使うとMyClassを修正しない といけなく、柔軟性がない ・単体テストが書きづらい →使う側と使われる側が切り離せていない
依存関係がない例 MyClassの_constructでEmailを外部から注入して いる ・Gmailを使う時にMyClassを修正しなくて良く、 柔軟性がある ・外から設定するので、単体テストが書きやすい →使う側と使われる側が切り離せている
依存関係がないと何が嬉しいの? 使う側と使われる側を切り離すことができる ・疎結合になり、柔軟性が増す ・単体テストが書きやすくなる
サービスコンテナの主なメソッド app()->bind() ・サービスコンテナに登録する ・AppServiceProviderにかく app()->make() ・サービスコンテナに登録したものを使う
実際にどんな時に使うかを紹介 ・外部APIのライブラリ使う時 ・テストの時 ・環境ごとに実装を分けたい時
外部APIのライブラリ使う時 メリット ・依存関係を解決できる ・APIキーの設定を毎回しなくて良くなる
テストの時 メリット ・注入元を変えられるから、単体テストが書 きやすい
環境ごとに実装を分けたい時
まとめ ・サービスコンテナは、クラスの依存関係を管理できる箱 ・依存関係がないと、使う側と使われる側を切り離すことができる ・疎結合になり、柔軟性が増す ・単体テストが書きやすくなる
もっとDIについて知りたい方 なぜ依存を注入するのか DIの原理・原則とパター ン | Steven van Deursen, Mark Seemann,
須田智 之 |本 | 通販 | Amazon 2024/05/17発売 656ページ
ご清聴ありがとうございました