Recommended
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PPTX
世界一わかりやすいClean Architecture
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
KEY
PDF
PDF
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PDF
PDF
PDF
PDF
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
PDF
PDF
PDF
PDF
3週連続DDDその3 ドメイン駆動設計 戦略的設計
PDF
PDF
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
PDF
オブジェクト指向プログラミングのためのモデリング入門
PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
PDF
PDF
アイスタイル特設サイトにおけるVue.js導入事例(再演)
More Related Content
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PPTX
世界一わかりやすいClean Architecture
What's hot
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
KEY
PDF
PDF
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PDF
PDF
PDF
PDF
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
PDF
PDF
PDF
PDF
3週連続DDDその3 ドメイン駆動設計 戦略的設計
PDF
PDF
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
PDF
オブジェクト指向プログラミングのためのモデリング入門
PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
More from Kenjiro Kubota
PDF
PDF
アイスタイル特設サイトにおけるVue.js導入事例(再演)
PDF
PDF
アイスタイル特設サイトにおけるVue.jsの導入事例
PDF
PDF
フロントエンドエンジニアが知るべきFirebaseの世界
PDF
PHP,Go,Elasticsearchによる、@cosmeを5倍速くする取り組み
PDF
カメラを利用したアプリを作って約1000人で遊んだ話
PDF
PDF
introducing vue-wait-component
PDF
PDF
PDF
PDF
2017: A CSS Design Odyssey
PDF
Introducing hhvm hack-async
PDF
PDF
PDF
PDF
中・大規模でLaravelを導入するTips 1. 2. 3. 4. 5. 6. 7. class ViewComposerServiceProvider extends ServiceProvider
{
public function register()
{
$view = $this->app->make('view');
$view->composer('welcome', AppHttpViewComposerUserComposer::class);
}
}
使い方
独自のServiceProviderを作成してconfig/app.phpに登録
8. use IlluminateViewView;
use IlluminateAuthAuthManager;
class UserComposer
{
private $auth;
public function __construct(AuthManager $authManager)
{
$this->auth = $authManager->guard('web');
}
public function compose(View $view)
{
$view->with([
'authUser' => $this->auth->user()
]);
}
}
AppHttpViewComposerUserComposer
9. 10. 11. 12. Facadeとは
'aliases' => [
'App' => IlluminateSupportFacadesApp::class,
'Artisan' => IlluminateSupportFacadesArtisan::class,
'Auth' => IlluminateSupportFacadesAuth::class,
'Blade' => IlluminateSupportFacadesBlade::class,
'Broadcast' => IlluminateSupportFacadesBroadcast::class,
'Bus' => IlluminateSupportFacadesBus::class,
'Cache' => IlluminateSupportFacadesCache::class,
'Config' => IlluminateSupportFacadesConfig::class,
'Cookie' => IlluminateSupportFacadesCookie::class,
'Crypt' => IlluminateSupportFacadesCrypt::class,
'DB' => IlluminateSupportFacadesDB::class,
'Eloquent' => IlluminateDatabaseEloquentModel::class,
'Event' => IlluminateSupportFacadesEvent::class,
'File' => IlluminateSupportFacadesFile::class,
'Gate' => IlluminateSupportFacadesGate::class,
'Hash' => IlluminateSupportFacadesHash::class,
'Lang' => IlluminateSupportFacadesLang::class,
'Log' => IlluminateSupportFacadesLog::class,
'Mail' => IlluminateSupportFacadesMail::class,
'Notification' => IlluminateSupportFacadesNotification::class,
'Password' => IlluminateSupportFacadesPassword::class,
'Queue' => IlluminateSupportFacadesQueue::class,
'Redirect' => IlluminateSupportFacadesRedirect::class,
'Redis' => IlluminateSupportFacadesRedis::class,
'Request' => IlluminateSupportFacadesRequest::class,
'Response' => IlluminateSupportFacadesResponse::class,
config/app.php
13. 14. 15. protected $bootstrappers = [
IlluminateFoundationBootstrapLoadEnvironmentVariables::class,
IlluminateFoundationBootstrapLoadConfiguration::class,
IlluminateFoundationBootstrapHandleExceptions::class,
// IlluminateFoundationBootstrapRegisterFacades::class,
IlluminateFoundationBootstrapRegisterProviders::class,
IlluminateFoundationBootstrapBootProviders::class,
];
IlluminateFoundationHttpKernel
Facadeを呼べないアプリケーションになります。
16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. /** @var Router $router */
$router = $this->app['router'];
$router->get('/', AppHttpActionIndexAction::class);
__invokeというマジックメソッドだけで表現するのでこれ以上メソッドを増やすことはできません。
また、Routerからの呼び出しは以下のようになります。
27. namespace AppHttpResponder;
use IlluminateViewFactory;
use IlluminateHttpResponse;
use IlluminateContractsSupportResponsable;
class IndexResponder implements Responsable
{
public function __construct( Factory $view)
{
$this->view = $view;
}
public function toResponse($request): Response
{
return new Response(
$this->view->make( 'welcome' ), 200
);
}
}
Responderの実装はLaravel5.5から追加されたResponsable Interfaceを実装することでスッキリか
けます。
28. if ($response instanceof Responsable) {
$response = $response->toResponse($request);
}
Responsable InterfaceのtoResponseメソッドはLaravelのRouterでコールされます。
ですので、toResponseメソッドでviewやjsonを返却することでResponderとして機能させることが可能
です。
IlluminateRoutingRouter
29. 30. 31.