お知らせ 4月12日(月)10:00から30分ほど、サーバーのメンテナンス作業を予定しております。作業の間はconnpassのご利用が出来ません。ご迷惑をおかけしますが何卒ご了承ください。

このエントリーをはてなブックマークに追加

Mar

1

Laravelのサービスコンテナをコードリーディングする会

Laravel書いてるけどサービスコンテナの動作原理を実は理解していないですって人を集める会

Registration info

喋りながらコードリーディングする枠

Free

FCFS
6/20

聞き専枠

Free

FCFS
103/300

参加者への情報
(参加者と発表者のみに公開されます)

Description

概要

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()を使わないとテストコードが動作しないとかあった記憶がある。どういう違い?

Media View all Media

If you add event media, up to 3 items will be shown here.

Feed

meijin

meijin wrote a comment.

2021/03/01 16:28

早めにZoomのURLを公開しました。時間になったら入ってください!

meijin

meijin published Laravelのサービスコンテナをコードリーディングする会.

02/20/2021 17:30

Laravelのサービスコンテナをコードリーディングする会 を公開しました!

Ended

2021/03/01(Mon)

20:00
21:30

You cannot RSVP if you are already participating in another event at the same date.

Registration Period
2021/02/20(Sat) 17:29 〜
2021/03/01(Mon) 21:30

Location

オンライン

オンライン

オンライン

Attendees(109)

meijin

meijin

Laravelのサービスコンテナをコードリーディングする会 に参加を申し込みました!

tyamahori

tyamahori

Laravelのサービスコンテナをコードリーディングする会 に参加を申し込みました!

namizatop

namizatop

Laravelのサービスコンテナをコードリーディングする会に参加を申し込みました!

choco

choco

お手柔らかにお願いします。

ucan-lab

ucan-lab

Laravelのサービスコンテナをコードリーディングする会に参加を申し込みました!

Santo

Santo

Laravelのサービスコンテナをコードリーディングする会 に参加を申し込みました!

シュレ

シュレ

Laravelのサービスコンテナをコードリーディングする会に参加を申し込みました!

myblackcat7112

myblackcat7112

Laravelのサービスコンテナをコードリーディングする会に参加を申し込みました!

Noriaki110_

Noriaki110_

Laravelのサービスコンテナをコードリーディングする会 に参加を申し込みました!

saya1001kirinn

saya1001kirinn

Laravelのサービスコンテナをコードリーディングする会に参加を申し込みました!

Attendees (109)

Canceled (5)