3月
1
Laravelのサービスコンテナをコードリーディングする会
Laravel書いてるけどサービスコンテナの動作原理を実は理解していないですって人を集める会
広告
| 募集内容 |
喋りながらコードリーディングする枠 無料
先着順
聞き専枠 無料
先着順
|
|---|---|
| 申込者 | 申込者一覧を見る |
| 開催日時 |
2021/03/01(月) 20:00 ~ 21:30
|
| 募集期間 |
2021/02/20(土) 17:29
〜 |
| 会場 |
オンライン(Zoom) オンライン |
| 参加者への情報 |
(参加者と発表者のみに公開されます)
|
イベントの説明
概要
Laravelのサービスコンテナをコードリーディングする会です。
「Laravelエンジニアだけどサービスコンテナの動作原理を実はよく理解していないんですって人を集めてサービスコンテナコードリーディング会をやりたい」
とツイートしたら30Likesほどもらったので企画しました。
Zoomなどを使って配信しつつ、お話しながらやろうと思います。
聞き専枠も作っておいたので、お好きな方でエントリーしてください。
タイムスケジュール
20時〜21時 通話しつつもくもくとコードリーディング
21時〜 成果を発表したり、記事にまとめる(Zennのスクラップ機能がおすすめです)
イベント作成者について
Qiita https://qiita.com/mejileben
Laravelタグで1290Contributionしている程度にはLaravelを使ったり発信をしています(2021/02/20時点)。
余談
イベント企画者(@meijin)のサービスコンテナに対するイベント企画時点での理解度
イベントのハードルが上がってしまっているとアレなので、イベント企画者自身の理解度を赤裸々に残しておきます。 正直分からないことだらけです。
サービスコンテナとサービスプロバイダの違いが分からない
コンテナはクラス名とその実体をマッピングして保存している場所で、プロバイダはコンテナへの登録を受け持っているクラスのこと・・・?
bind()されたInterfaceと実装クラスの関係は何に保存されている?
以下のコードがあるとして、
// MySQLHogeRepositoryのインスタンスが取得できる
$this->app->make(HogeRepositoryInterface::class)
HogeRepositoryInterface::classとMySQLHogeRepository::classはAppServiceProvider等のbind()メソッドで紐付けを行っているわけですが、その紐付けは実体としては大きな連想配列とかに保存されている感じ?
Controllerクラスでは当たり前のようにメソッドインジェクションやコンストラクタインジェクションが行えるのはなぜ?
Controllerはapp->make()などしているわけではなくroutes/hoge.phpで呼び出しているだけなのに各種インジェクションが行えるのはどうして?これはindex.php->route系の処理を追っていけば分かるのかな。
ちなみにCommandを拡張したartisan command用のクラスではhandleメソッドでメソッドインジェクションができるが、コンストラクタインジェクションは失敗する。これはどうして?
メソッドインジェクションやコンストラクタインジェクションではどうして順不同で指定のクラスのバインド元が引っ張ってこれるの?
ControllerのアクションメソッドではRequest型にタイプヒントしたらRequest型の値が入る。これはどういう判断ロジック? 同様にコンストラクタインジェクションも。
public function index(Request $request, int $id) {
// ...
}
func_get_argsしてそれぞれの引数に対してget_classとかしてる?
各種インジェクションはなぜ再帰的に利用できるの?
ControllerからUseCaseをインジェクションしたら、そのUseCaseがコンストラクタインジェクションしているとそのインジェクションも無事に完了する。このように再帰的に?インジェクションが実行できているのはどうして?引数がプリミティブな値になるまで依存解決するための関数を再帰的に回してる?
bind()とinstance()の違いとは
細かいけどたまにinstance()を使わないとテストコードが動作しないとかあった記憶がある。どういう違い?
資料 資料をもっと見る/編集する
資料が投稿されると、最新の3件が表示されます。
広告

エンジニアをつなぐ
connpass は株式会社ビープラウドが開発・運営しています