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
100
Laravelに入門してみた
ken
March 17, 2021
Tweet
Share
More Decks by ken
See All by ken
リリース済にも関わらず何のドキュメントもなかったシステムの仕様書を書いてみた話
segamiken
0
110
Accessibilityに興味が出てきた話
segamiken
0
110
Other Decks in Programming
See All in Programming
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
150
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
160
SQL Server 2025 LT
odashinsuke
0
120
クラウドに依存しないS3を使った開発術
simesaba80
0
220
Patterns of Patterns
denyspoltorak
0
420
Developing static sites with Ruby
okuramasafumi
1
340
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
240
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
180
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
930
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
210
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.3k
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
640
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.5k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
200
Context Engineering - Making Every Token Count
addyosmani
9
590
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Fireside Chat
paigeccino
41
3.8k
The Cult of Friendly URLs
andyhume
79
6.8k
Making Projects Easy
brettharned
120
6.5k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
0
51
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
100k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
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 するのに比べて、メモリー効率、パフォーマンス 効率が上がる サービスコンテナを介してインスタンスにアクセスする為、テスト を記述する時に、モックに入替えることが出来る