Page 1
Laravel3に入門してみる
Let's begin with Laravel 3
2019-02-16 Laravel JP Conference Shibaura, Tokyo, Japan #laraveljpcon
公開日:
by USAMI Kenta@tadsan
に東京都港区芝浦の田町グランパークカンファレンスで開催された『Laravel JP Conference』でライトニングトーク(5分)として発表しました。
Let's begin with Laravel 3
2019-02-16 Laravel JP Conference Shibaura, Tokyo, Japan #laraveljpcon
さて
PHP界隈でのLTデビュー戦(2015年11月)
経歴上PHPのフレームワークを深く使うことは全然なかった
PHP界隈でのLTデビュー戦(2015年11月)
フレームワークを作るのは難しいのか?
Laravelのように多くの局面で受け入れられるフレームワークを設計するのは難しい
自分の問題を解決する小さなフレームワークを作るのはそれほどでもない
Create your own PHP Framework
PHPer人生、一度はフレームワークを作っておこう
実運用する上での数々のリスクは一旦置いておいて(セキュリティとか)
(自分で動かすだけなら)
それからまあまあ経験を積んで
2019年
そういえばLaravel JP Conferenceのスタッフになったけど人生でLaravelを10行くらいしか書いてない
|\ __ /_ (m) _ ピコーン|ミ|/ `´ \('A`)ノヽノヽくく
しかし良い解説書は既にあるし、ここはLaravel JP Conferenceなんだから大多数は体験済み
|\ __ /_ (m) _ ピコーン|ミ|/ `´ \('A`)ノヽノヽくく
元ねた:Rails 1.0のコードを読む
そうして我々はGitHubの奥地へと旅立った
https://github.com/laravel/laravel/releases?after=v3.0.1
_人人人人人人人人_> 3.0以前がない < ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄
じゃあ3.2.14で
Let's begin with Laravel 3
2019-02-16 Laravel JP Conference Shibaura, Tokyo, Japan #laraveljpcon
このバージョンを選んだ理由
https://github.com/laravel/laravel/releases/tag/v3.2.14
たぶん1.xとか2.xのコードも漁ればあるとは思うけど
Laravel 3.2.14の特徴
2013年3月22日リリース
3.x系の最終バージョン
新しい方が些細なバグも解消されてるだろ、という日和
古いPHPフレームワークの特徴が色濃く残っている
古いフレームワークの特徴?
依存パッケージ(Symfony)のコピーも直接コミットされてる
Symfonyのcomposer.jsonは同梱されてるが、Laravel自体はComposer未採用
全コードが1リポジトリにある
ということでコードリーディングを始めました
この時点で14時くらい
(当日スタッフのシフト後)
やったこと
Phanを使いましょう
理由
PHP7の非互換を早めに潰す
Laravelの特徴的なメタプログラミングを炙りだす
Phanで静的にわからない=妖怪のしわざメタプログラミング
yield関数 (5.5以降SyntaxError)
SyntaxErrorになるような非互換はこれだけ
改行位置 (C#っぽい)
PHPDocはかなり書かれてる
ファイル名が小文字
表層的なことはもういい
動かそう
PHP 7.3で
mcryptに依存してる
キー長のパディング
めんどくさいのでビルトインWebサーバphp -S localhost:3939 public/index.php
動いた!
見ためがプレーンだけど実はHTML5
localhostでドキュメントも読める
2013年時点でホスピタリティすごい
動いたので雑に実装していく
ルーティング追加は(表面的に)大差ない
フォームの受け取りがわからなかった(Symfony\HttpFoundation依存)
BladeはLaravel3で導入
いま気付いたけどBladeってASP.netのRazorのオマージュじゃん
オチはないけどまとめ
雑にWebアプリっぽいものを作ることはできた
癖がわかればコードは読みやすかった
依存関係がリポジトリ内に全部あるので追いやすかった
コードは90000行くらい(コメント/空行含む)
当然全部は読んでない
doc消し忘れたLaravelアプリとかこの世にありそう
内部実装的なエッセンスがどの程度Laravel4以降に引き継がれてるかはわからない
表面的には同じだと言ったが細かいAPIは「かなり」異なる
