BackEnd

Laravelの基礎知識

投稿日:

はじめに

今回の記事は、PHPのフルスタックフレームワークであるLaravelの簡単な概要とライフサイクルなどの基礎的な知識となります。

こちらの記事にもある通り、先日からPHPを勉強していおり、今回は続きを書こうと思っていたのですが、並行して勉強しているLaravelを記事にした方が勉強になるかなと思ったので、こちらを記事にすることにしました。

Laravelの概要

LaravelはPHPのいわゆるフルスタックフレームワークです。ルーティング、DB関連の機能(マイグレーションやORMなど)、テンプレートエンジン(Blade)などのWebアプリケーションに必要な一通りの機能を提供します。

Laravelの特徴としてはいくつか挙げられますが、注目すべき点は下記の3つだと思います。

  • 学習コストが低い
  • Symfonyがベース
  • DIを積極的に活用している

学習コストが低い

公式でもうたっている通り、比較的に学習の難度は低いと思います。Laravelでは様々な機能をFacadeとして提供しており、容易に複雑な機能を利用できるようになっています。例えばセッションを扱いたい場合は下記のようになります。

Symfonyがベース

Laravelではコア部分にSymfonyのコンポーネントを利用しています。Symfonyは古くからPHPで使用されている実績のあるフレームワークであり、Laravelの信頼性に寄与します。

DIを積極的に活用している

Laravelではサービスコンテナという機能でDI(Dependency Injection)を実現しています。さらに、このサービスコンテナとコントラクト(インタフェース)を利用することで、Laravel自体のカスタマイズ(暗号化方式を変更するなど)も容易に行えるようになっています。

ディレクトリ構成

Laravelは拡張性の高いフレームワークなので、ディレクトリ構成を柔軟に変更することができます。ここでは、プロジェクト作成時のディレクトリ構成にそって説明します。ディレクトリ構成は下記のとおりです。

app

Console、Exceptions、Http、Providersなどのフォルダがあります。アプリケーションの処理はこのディレクトリ以下に配置します。

bootstrap

アプリケーションの初期化処理やオートローディングの設定ファイルが置かれます。

config

アプリケーションの設定ファイルが置かれます。

database

マイグレーションファイルやSEEDファイルが置かれます。

public

index.phpの他に画像、CSS、JavaScriptといったそのまま公開できるファイルが置かれます。index.phpはアプリケーションに送られる全てのリクエストを処理するエントリーポイントとなるファイルです。

resources

ViewのテンプレートファイルやLESS、SASS、TypeScriptなどのファイルが置かれます。

routes

web.phpやapi.phpなどのルート定義ファイルが置かれます。

storage

ログファイルやキャッシュファイルなどのLaravelが作成するファイルが置かれます。

tests

テストコード関連のファイルが置かれます。

vendor

Laravel本体やSymfonyのコンポーネントが置かれています。他にもcomposerでダウンロードされるパッケージもここに置かれます。

ライフサイクル

Laravelがリクエストを処理する流れは下記のとおりです。レスポンスはリクエストと逆の流れで処理されます。

  1. エントリーポイント
  2. HTTPカーネル
  3. ルータ
  4. ミドルウェア
  5. コントローラ

エントリーポイント

Laravelでは全てのリクエストをエントリーポイントであるindex.phpで受ける必要があります。index.phpのコードを見ながら処理の流れを追ってみます。

HTTPカーネル

HTTPカーネルはアプリケーションのセットアップやミドルウェアの設定を行います。その後、ルータにリクエストをディスパッチします。HTTPカーネルでは他にも例外処理やイベントリスナーの設定も行います。

ルータ

ルータではリクエストにマッチするルートを探して実行します。コントローラやアクションクラスの他に、クロージャを直接定義することもできるので、簡単な処理であればルータに記述することもできます。

ルートの定義はweb.phpもしくはapi.phpに記述します。ルート定義の例をは下記のとおりです。

ミドルウェア

ミドルウェアはコントローラ等でリクエストを処理する前後に任意の処理を行います。ミドルウェアの例としては暗号化(復号化)やセッション管理などがあげられます。

ミドルウェアの実行は数珠つなぎのように連結して行われるので、それぞれのミドルウェアは一つの処理のみを行います。

コントローラ

コントローラではHTTPリクエストに応じて処理を行います。

さいごに

Laravelの基礎知識として特徴、ディレクトリ構成、ライフサイクルについて紹介しました。

おすすめ書籍

初めてのPHP  よくわかるPHPの教科書 【PHP7対応版】  PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応  基礎から学ぶ Vue.js

blog-page_footer_336




blog-page_footer_336




-BackEnd
-,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

WebアプリからLINEのメッセージを送る方法

1 はじめに2 Messaging APIとは2.1 Messaging APIの仕組み2.2 Webhookイベント2.3 メッセージオブジェクトの種類2.4 料金形態3 LINE Develope ...

laravel logo

Laradock環境にPHPStormからXdebugする

1 はじめに2 Laradock側の設定変更2.1 xdebug.iniファイル2.2 .env2.3 コンテナの再構築3 PHPStormの設定3.1 Preferences3.1.1 Build, ...

laravel logo

Laravelのバリデーションtips

1 はじめに2 配列のバリデーションでRule::uniqueを使う時のカラム名を指定したい3 配列バリデーションのエラーメッセージ制御4 カスタムバリデーションで、他の属性名を参照したい5 番外:複 ...

rails

Rails Developer Meetup に参加してきました【2日目】

1 はじめに2 Rails Developer Meetup3 テストのないレガシーなRailsアプリをリファクタした話3.1 なぜリファクタリングしたのか3.2 コードを3種類に分類する3.3 モデ ...

rails

Shrineを使って画像をアップロードする

1 はじめに2 Shrineとは2.1 簡単な説明2.2 作者2.3 特徴3 下準備3.1 Gemを追加3.2 初期設定3.3 テーブルを作成する4 実装4.1 Uploaderの実装4.2 Mode ...

フォロー

follow us in feedly

blog-page_side_responsive

2019年1月
 12345
6789101112
13141516171819
20212223242526
2728293031 

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。