laravel / lumen 次の一歩

31
Laravel / Lumen 次の一歩 ytake / 20150529 Laravel LT at JP

Upload: yuuki-takezawa

Post on 25-Jul-2015

586 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Laravel / Lumen 次の一歩

Laravel / Lumen 次の一歩ytake / 20150529 Laravel LT at JP

Page 2: Laravel / Lumen 次の一歩

Profile

• ytake (github), ex_takezawa(twitter)

• java, php, node.js, RDBMS, NoSQL, VoltDB

Page 3: Laravel / Lumen 次の一歩

4章を担当させていただきました

Containerなど盛り沢山

Page 4: Laravel / Lumen 次の一歩

Facade Really useful :)

Page 5: Laravel / Lumen 次の一歩

!= GoF Facades

Page 6: Laravel / Lumen 次の一歩

Facadeを利用する上での問題

• static だと思ってしまう。(養成読本をどうぞ!)

• 確かに楽ですが、テストコード正しく書けてますか?

• どこでも簡単に使えるので、非構造化になりがち

Page 7: Laravel / Lumen 次の一歩

Eloquentも同じ

Page 8: Laravel / Lumen 次の一歩

public function getEntries() { $entries = \Entry::all() ->toArray(); if(!count($entries)) { throw new \Exception; } }

Page 9: Laravel / Lumen 次の一歩

$eloquentMock = m::mock(‘overload:App\Repositories\Eloquent\Entry');

$collection = m::mock(‘Illuminate\Database\Eloquent\Collection');

$eloquentMock ->shouldReceive(‘all') ->andReturn($collection);

$collection->shouldReceive(‘toArray') ->andReturn([1, 2, 3]);

Page 10: Laravel / Lumen 次の一歩

次のステップにいくには 構造化を考えることが大事

Page 11: Laravel / Lumen 次の一歩

インターフェース/疎結合

Page 12: Laravel / Lumen 次の一歩

インターフェース 具象クラス

バインド

Page 13: Laravel / Lumen 次の一歩

インターフェース 具象クラス

インターフェース 具象クラス

インターフェース 具象クラス

インターフェース 具象クラス

インターフェース 具象クラス

インターフェース 具象クラス

コンテナ

*イメージ

Page 14: Laravel / Lumen 次の一歩

コンストラクタ・メソッド インジェクションで解決

Page 15: Laravel / Lumen 次の一歩

HogeClass constructor 具象クラス

インターフェース

Page 16: Laravel / Lumen 次の一歩

HogeClass

hogeと名付けようサービスロケータなど

Page 17: Laravel / Lumen 次の一歩

名前 具象クラス

名前 具象クラス

インターフェース 具象クラス

インターフェース 具象クラス

名前 具象クラス

インターフェース 具象クラス

コンテナ

*イメージ

Page 18: Laravel / Lumen 次の一歩

Facade

具象クラスインターフェース 名前

*関連性にアクセスするためのもの

Page 19: Laravel / Lumen 次の一歩

// バインディング $this->app->bind( 'App\Hogeable', 'App\Hoge' ); // 関係性にアクセサ名 $this->app->bind('hoge', function() { return $this->app->make('App\Hogeable'); });

Page 20: Laravel / Lumen 次の一歩

バインドの次は、 Facadeの実クラスを知ること よりテストがしやすく 補完にもやさしい

Page 21: Laravel / Lumen 次の一歩

DB => DatabaseManager

Page 22: Laravel / Lumen 次の一歩

Redirect => Redirector

+ UrlGenerator + RouteCollection

+ Request

Page 23: Laravel / Lumen 次の一歩

概念も分離

Page 24: Laravel / Lumen 次の一歩

DB

リポジトリ

エンティティ

Eloquent / ORM

Page 25: Laravel / Lumen 次の一歩

ストレージ リポジトリ

DBに依存してはならない

Page 26: Laravel / Lumen 次の一歩

HogeClass

リポジトリ

サービスI/F

I/F

Page 27: Laravel / Lumen 次の一歩

Route

formRequest

Controller

beforemiddleware

aftermiddleware

view

Page 28: Laravel / Lumen 次の一歩

Route

formRequestController

beforeafter

view

サービスI/F

リポジトリI/F

dispatch

Page 29: Laravel / Lumen 次の一歩

分離することで見えてくるフレームワーク

Page 30: Laravel / Lumen 次の一歩

本当のLaravelはここから

Page 31: Laravel / Lumen 次の一歩

ご静聴ありがとうございました