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 Developer Meetup に参加してきました【1日目】

1 はじめに2 発表について2.1 安全かつ高速に進めるマイクロサービス化2.2 Rails in Microservices2.3 MySQL/InnoDB の裏側2.4 H2O/mruby でつく ...

Go言語

Go言語のエラーハンドリングとログローテーション

1 はじめに2 エラーハンドリング2.1 error インターフェース2.2 pkg/errors パッケージ3 独自のエラータイプ付き errorsパッケージを作成4 log パッケージ4.1 lo ...

rails

RailsでERBからJavaScriptにhashを渡す方法

1 はじめに2 カスタムデータ属性とは3 実装例3.1 コントローラの実装3.2 ビューの実装3.3 実行結果4 さいごに はじめに 以前、選択したプルダウンメニューに応じて別のプルダウンメニューの内 ...

rails

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

1 はじめに1.1 前提条件1.2 関連記事2 AWS側の準備2.1 S3バケットを作成する2.2 CORSを設定する2.3 アクセス用のユーザを作成する3 Rails側の設定3.1 Initiali ...

rails

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

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

フォロー

follow us in feedly

page_side_300rect

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

アプリ情報

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