LoginSignup
1

More than 5 years have passed since last update.

Laravel 概要

Last updated at Posted at 2018-07-01

PHPのWebアプリケーションフレームワークのデファクトスタンダードになりつつある(?)Laravelを学ぶ機会があったため、概要を簡単にまとめてみました。

対象バージョン:Laravel 5.6

はじめに

開発環境のセットアップ

Laravel Homestead(Laravel開発に必要なミドルウェア等をパッケージしたVagrant Boxファイル)を使うと簡単に開発環境をセットアップできる。

Homestead.yaml にIPアドレスなどの設定が記載されている。

LaravelでのMVCモデル

Ruby on Railsを模倣したモデル構造をしている。

Router --> Controller <--> Model <--> DB
                      <--> View
Laravelのディレクトリ構造
  • /routes/
    • ルーティング設定ファイルを格納する。
  • /app/Http/Controllers/
    • コントローラを格納する。
  • /app/
    • モデルを格納する。
  • /database/migrations/
    • データベースのマイグレーションファイルを格納する。
  • /resources/view/
    • テンプレートファイルを格納する。
  • /public/
    • Webに公開する静的ファイルを格納する。

リソースに対するCRUD操作画面を作成する流れ

artisanコマンドでモデル・コントローラの雛形を作成する
php artisan make:model {モデル名} -m -c -r
  • -m:DBマイグレーションファイルを作成する。
  • -c:コントローラを作成する。
  • -r:コントローラにリソースメソッドを作成する。
データベーススキーマを定義する
  • 雛形 /database/migrations/xxxx.php のupメソッドにテーブル定義を記述する。
  • php artisan migrate を実行してテーブル定義を反映する。

参考:https://readouble.com/laravel/5.6/ja/migrations.html

コントローラーを実装する

雛形 /app/Http/Controllers/xxx.php の各メソッドを書き換えてモデル操作とビュー返却を行う。

  • 雛形コントローラーにはCRUD操作で必要になる画面用のメソッドが定義されている。
  • コントローラーメソッドではモデルクラスを使ってデータ操作を行い、ビューにデータを渡してレンダリングして返却する。
ビューを実装する
  • コントローラーから渡されたデータをBladeテンプレート使ってHTML構造に埋め込む。
  • CSRF対策には@csrfを記述することでCSRFトークンをhiddenフィールドに埋め込める。
ルーティングを設定する

/routes/web.phpにコントローラーメソッドへのルーティング設定を記載する。

  • Route::resource を使うことでコントローラのリソースメソッドのルーティング設定が簡単にできる。

参考:https://readouble.com/laravel/5.6/ja/controllers.html#resource-controllers

(おまけ)データベースにダミーデータを追加する

Seederを作成してデータベースにダミーデータを投入(シーディング)する。

  • php artisan make:seeder {Seeder} を実行して雛形を作成する。
  • 雛形 /database/seeds/{Seeder}.php を編集してダミーデータ作成コードを記述する。

参考:https://readouble.com/laravel/5.6/ja/seeding.html

その他補足

バリデーション

コントローラーにリクエストのバリデーション処理を以下の2通りの方法で記述できる。

  1. Requestオブジェクトのvalidateメソッドを使う方法
    • バリデーション違反時のエラーレスポンスを自動生成してくれる。
  2. Validatorファサードを使ってバリデータを生成する方法
    • バリデーション処理のみ実施してエラーレスポンスを自分で構築する。
エラー処理

ハンドリングされない例外に対する処理は app/Exceptions/Handler.php に記述できる。

  • reportメソッド:ログ出力や外部サービス(監視サービスなど)への通知を行う。
  • renderメソッド:発生した例外に対するレスポンスを出力する。
ミドルウェア

ミドルウェアを使うことで、HTTPリクエストに対して、コントローラの処理の前後に処理を挟むことができる。認証やCSRF保護などコントローラーの共通処理をまとめるのに役立つ。

参考:https://readouble.com/laravel/5.6/ja/middleware.html

例:Laravel組み込みの auth.basic ミドルウェアを使ってBasic認証を設定する。

Route::get('profile', function() {
    // ...
})->middleware('auth.basic');

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1