※社内専用

Laravel

バージョン情報

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を埋め込むタグをローカルのみ適用)