Más contenido relacionado
Similar a Laravel本とコミュニティの話 (20)
Laravel本とコミュニティの話
- 12. Laravel JP Conference
• LaravelやLumen、その周辺技術を
題材にしたセッション、実例などのトーク
• PHPやその周辺技術、設計などのセッション、トーク
• ワークショップ
• その他企画を検討中
- 20. • これまでやってきたこと
• Laravel Testing Decoded
(JP) 読書会
• もくもく会
• Laravel vs Yii
• Freek さんのトーク
(@freekmurze)
• 最近は20分トーク+LT
Laravel Meetup
Tokyo
- 21. Laravel Meetup Tokyo
• 参加者たくさん(ありがとうございます)
• 現場での導入事例を聞ける場
(最近は設計話が増えてきた気がする)
[主催者として]
• 様々な知見を得る
• 学ぶ&アウトプットの
「場所」をつくる
- 23. 裏話的な
• スケジュール
• 幻のパフォーマンスチューニング
• エモい話
Overview
PHPフレームワーク
Laravel Webアプリケーション開発
バージョン 5.5 LTS対応
• 竹澤さん、新原さん、大村さんとの共著
• 2018年9月26日発売、544ページ
• 出版:ソシム社
※ ソシム社のページにGitHubのURLと
正誤表があります。ご参照ください。
- 32. bootstrap/app.php
<?php
// Applicationクラス(サービスコンテナ)インスタンスの取得
$app = new Illuminate¥Foundation¥Application(
realpath(__DIR__.'/../')
);
// Kernelなどのクラスをシングルトン指定でバインド
$app->singleton(
Illuminate¥Contracts¥Http¥Kernel::class,
App¥Http¥Kernel::class
);
$app->singleton(
Illuminate¥Contracts¥Console¥Kernel::class,
App¥Console¥Kernel::class
);
$app->singleton(
Illuminate¥Contracts¥Debug¥ExceptionHandler::class,
App¥Exceptions¥Handler::class
);
return $app;
- 37. Illuminate¥Foundation¥Http¥Kernel
public function __construct(Application $app, Router $router)
{
$this->app = $app;
$this->router = $router;
$router->middlewarePriority = $this->middlewarePriority;
foreach ($this->middlewareGroups as $key => $middleware) {
$router->middlewareGroup($key, $middleware);
}
foreach ($this->routeMiddleware as $key => $middleware) {
$router->aliasMiddleware($key, $middleware);
}
}
Middleware定義を
ルータに登録
Middleware定義を
ルータに登録
Middleware定義を
ルータに登録
- 41. Illuminate¥Foundation¥Http¥Kernel
public function handle($request)
{
try {
$request->enableHttpMethodParameterOverride();
$response = $this->sendRequestThroughRouter($request);
} catch (Exception $e) {
$this->reportException($e);
$response = $this->renderException($request, $e);
} catch (Throwable $e) {
$this->reportException($e = new FatalThrowableError($e));
$response = $this->renderException($request, $e);
}
$this->app['events']->dispatch(
new Events¥RequestHandled($request, $response)
);
return $response;
}
- 45. Symfony¥Component¥HttpFoundation¥Request
public static function createFromGlobals()
{
$server = $_SERVER;
if ('cli-server' === PHP_SAPI) {
if (array_key_exists('HTTP_CONTENT_LENGTH', $_SERVER)) {
$server['CONTENT_LENGTH'] = $_SERVER['HTTP_CONTENT_LENGTH'];
}
if (array_key_exists('HTTP_CONTENT_TYPE', $_SERVER)) {
$server['CONTENT_TYPE'] = $_SERVER['HTTP_CONTENT_TYPE'];
}
}
// GETやPOST以外にも、cookieやserver変数も含めて$requestクラスに格納される
$request = self::createRequestFromFactory($_GET, $_POST, array(), $_COOKIE, $_FILES, $server);
if (0 === strpos($request->headers->get('CONTENT_TYPE'), 'application/x-www-form-urlencoded')
&& in_array(strtoupper($request->server->get('REQUEST_METHOD', 'GET')), array('PUT', 'DELETE', 'PATCH'))
) {
parse_str($request->getContent(), $data);
$request->request = new ParameterBag($data);
}
return $request;
}
Symfonyから
Requestクラスを生成