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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ken
March 17, 2021
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
Cloudflare is Agents
chimame
0
190
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
180
プロポーザルを書いてもらう
pvcresin
0
590
[DroidKaigi 26] How We Moved from Android Studio to Slack
thisaay
0
140
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
870
バグを直したら useEffect が消えた
colorful12
3
780
ALB ログから Trace を気合で繋げる技術
fohte
7
840
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.1k
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
400
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
250
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
280
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
200
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.7k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.5k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Amusing Abliteration
ianozsvald
1
280
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
300
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
310
Done Done
chrislema
186
16k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
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 するのに比べて、メモリー効率、パフォーマンス 効率が上がる サービスコンテナを介してインスタンスにアクセスする為、テスト を記述する時に、モックに入替えることが出来る