投稿日:2017/06/22
バージョン情報
6/22時点での最新は5.4
公式ドキュメントが優秀
https://readouble.com/laravel/5.4/ja/
Laravelはマイナーバージョンアップでも
大きな更新が行われるみたいで、
ファイル構成が大きく変更になってたりする。
5.3→5.4はより顕著な印象。
破壊的な変更はなさそうだが正直分からない。
5.3→5.4主な変更点
Laravel Elixir → Laravel Mixに名称変更
Elixirの部分がElangであるElixirとは別物で紛らわしいとのことで変更となったらしい。
違ったんかい・・・。
それに伴い、gulp+webpackだったのがwebpack一本になってたりする。
ディレクトリ構造変更
5系になってからもガンガン変更入ってる模様
例:
app/Http/routes.php
↓
route/web.php
こんな感じで混乱が多いので、5.3以下の情報は基本見ないほうがいい。
5.4のドキュメントをベースにすすめて、不明な点のみ他を参照する、
更新差分はうまいこと読み替えて進める。
MySQLのデフォルトの文字コード
これが一番ハマった。
utf8→utf8mb4に変更になってる。emji対応?
文字数のバイト計算に影響するらしく、
MySQLでutf8_unicode_ciで作ってたりすると
データベースのmigrationが出来ない。
俺はこれでエラー吐いてるのをphp側の構文ミスと思って
無駄な時間を過ごした。
Artisan
Laravel標準のコマンドラインインターフェイス
CakePHPのbake、FuelPHPのoilのようなもの。
とにかく便利で、modal、controllerなど何かするときは
Artisanにて行うクセを付けよう。
MVC?
CakePHPでのMVCとはなんとなく違うようだ。
PHP界隈はあまり詳しくないが、Javascript界隈と同じく
これまでのMVC構造は限界がある、との認識が漂い始めてるらしい。
Model
MVC理論で言うとビジネスロジックを入れるため、といった趣だが
Laravelでは単にデータベースとの接続で使われる。
中の情報のほとんどはリレーションになるだろう。
ビジネスロジックはサービスコンテナやミドルウェアに収めれることになると思う。
Fat Modelとは無縁な存在になりそう。
Controller
特に言うことはない。
View
テンプレートエンジンにBladeを採用している。
これがとにかく優秀で、Blade記法だけでなくphpのダイレクトな埋め込みにも対応している。
これにより純粋なviewデータの上位種の地位を守っているのが素晴らしい。
LaravelのViewはjavascriptフレームワークのVueが同梱されているが、
別に使わなくてもいい。
Laravel Mixを改造するとオートリロードにも対応でき、申し分はない。
データベース関連
キーワードはMigration、Seeding、Eloquent
Migration
「マイグレーションとはデータベースのバージョンコントロールのようなもの」
というがこれは使ってみないと理解しにくいかもしれない。
マイグレーション作業自体が経過記録されていて、
撒き戻し(ロールバック)、リフレッシュが出来る。
テーブルを初期化するマイグレートや
初期化済みのテーブルにカラムを追加するマイグレート、
それらを取り消すロールバック情報を入れておける。
データベース操作はかならずマイグレーションで行うように。
Seeding
開発やテストに必要な初期データの登録が可能。
データベースコントロールとデータ作成が
マイグレーションとシーディングで分離されているのは非常に扱いやすく、
全テーブル初期化→初期データ準備も
ワンコマンドで行えるようになっている。
Eloquent
Laravel内で扱うデータベース接続インターフェイスと思ってもらって良い。
感覚的にはPDOの拡張版。
モデルと強く結びつき、データベース操作を
いたるところから感覚的に行えるようになっている。
.envファイル
configファイルのようなもので、DBへの接続情報はもちろん
開発バージョン的なものも持たせることが出来る。
ここでの設定はBladeテンプレート内の条件分岐としても使用できるので
このファイルを環境毎(ローカル・ステージング、本番)に用意して
コンテンツを出しわけることも可能
(例:BowserSyncリロード用のjsを埋め込むタグをローカルのみ適用)