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
110
0
Share
Laravelに入門してみた
ken
March 17, 2021
More Decks by ken
See All by ken
リリース済にも関わらず何のドキュメントもなかったシステムの仕様書を書いてみた話
segamiken
0
120
Accessibilityに興味が出てきた話
segamiken
0
110
Other Decks in Programming
See All in Programming
自動レビューエンジンの実装と運用 ~レビューのない世界へ~
kurukuru1999
2
310
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
240
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
130
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
430
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
180
AI時代のUIはどこへ行く?その2!
yusukebe
19
6.4k
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
330
TypeSpec で繋ぐ複数プロダクトの型安全
maroon8021
1
330
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
130
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
140
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
230
LLM Plugin for Node-REDの利用方法と開発について
404background
0
150
Featured
See All Featured
Visualization
eitanlees
152
17k
For a Future-Friendly Web
brad_frost
183
10k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
560
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
330
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
390
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.6k
The Curse of the Amulet
leimatthew05
1
13k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
190
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
200
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
130
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
280
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 するのに比べて、メモリー効率、パフォーマンス 効率が上がる サービスコンテナを介してインスタンスにアクセスする為、テスト を記述する時に、モックに入替えることが出来る