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

page_footer_300rect




page_footer_300rect




-BackEnd
-,

執筆者:


comment

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

CAPTCHA


関連記事

rails

Railsのバリデーション

1 はじめに2 基本的なバリデーション3 EachValidatorクラス4 Validatorクラス5 autoload_pathsの編集6 さいごに はじめに 今回はRailsのActiveRec ...

Go言語

Go言語の基礎〜基本構文その2〜

1 はじめに2 配列3 スライス3.1 スライスの宣言3.2 len3.3 append3.4 range3.5 値の切り出し3.6 可変長引数4 map4.1 宣言と初期化4.2 マップの操作4.3 ...

Laravelの開発環境をdocker-composeで一から構築してみる

1 はじめに2 nginxでwebサーバを立てる2.1 default.conf作成2.2 index.html作成2.3 nginxコンテナ起動3 nginxでPHP-FPMを動作させる3.1 do ...

rails

Shrineでアップロードする際に画像を加工する

1 はじめに2 アップロードする画像のリサイズ2.1 Gemを追加2.2 Uploaderの修正3 サムネイルを作成する3.1 Uploaderの修正3.2 サムネイルを表示する4 バリデーションの追 ...

rails

RailsでS3に画像をアップロードする

1 はじめに2 今回やりたいこと3 下準備3.1 ImageMagickをインストールする3.2 Gemをインストールする4 レコード生成時にファイルを指定してアップロードする4.1 アップローダを作 ...

フォロー

follow us in feedly

page_side_300rect

2019年1月
« 12月   2月 »
 12345
6789101112
13141516171819
20212223242526
2728293031  

アプリ情報

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

Web版MyCoach

私たちはより広い方にコーチングを知ってもらいたいと考えています。 下記のサイトにて、コーチの方々を紹介しておりますので、よろしければご覧ください。