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


関連記事

Go言語

GoフレームワークGinでミドルウェアを使ってログインAPIを実装

1 はじめに2 ログインAPIの作成3 ログインのセッション管理4 ミドルウェア4.1 gin.Default()4.2 Logger4.3 Recovery4.4 sessions5 独自ミドルウェ ...

Go言語

Go言語で使えるmigrationライブラリ

1 はじめに2 migrationライブラリ2.1 goose2.2 sql-migrate2.3 migu2.4 pop2.5 sqldef3 sqldefを使ってみる3.1 導入3.2 テーブルを ...

rails

RailsでSidekiqを使ってみた

1 はじめに1.1 実行環境2 前準備2.1 Redisのインストール3 Railsの準備3.1 プロジェクト作成3.2 新規登録時にAPIを叩く4 Sidekiqの準備4.1 Workerを作る5 ...

laravel logo

Laravelで非同期実行する

1 はじめに1.1 動作環境2 準備2.1 デーブルの作成2.2 .envの修正3 ジョブの作成4 ジョブのディスパッチ5 キューワーカーを起動6 より細かな制御6.1 特定のキューにディスパッチする ...

rails

Ruby、Railsの時間に関するメソッドを使用してみた

はじめに 普段PHPのお仕事をしています、tonnyです。 半年程前からRuby on Railsの勉強を始めました。 今回はよく使う時間に関するメソッドついてまとめたいと思います。 目次 1 はじめ ...

フォロー

follow us in feedly

blog-page_side_responsive

2019年1月
 12345
6789101112
13141516171819
20212223242526
2728293031 

アプリ情報

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