PR TIMESデザイナー&エンジニアブログ BREAK TIMES

PR TIMES Developer Blog(デザイナー&エンジニアによる開発者ブログ)

PR TIMES Developer Blog

当ブログは下記URLに移転しました。
https://developers.prtimes.jp/

Laravelの概要

R TIMESサーバーサイトエンジニアのゴです。

今日はPHPフレームワークの中で、最近注目されつつのLaravelについて簡単にお話しをしたいと思います。

フレームワークとは
Webフレームワークには、Webアプリケーションを開発するために必要なライブラリ(プログラム部品)と構造が含まれています。
Laravel5のディレクトリ構成は以下

app
  -----Commonds
  -----Console
  -----Events
  -----Exceptions
  -----Handlers
         -----Commonds
         -----Events
  -----Http
         -----Controllers
         -----Middleware
         -----Requests
  -----Providers
  -----Services
bootstrap
config
detabase
  -----migration
  -----seeds
public
resources
  -----assets
  -----lang
  -----views
storage
tests
vendor

LaravelはMVCパターンを採用したWebフレームワークで、主な機能は次の通りです。

ここでも、簡単にMVCとは何をお話しします。すでに理解した方はご辛抱していただきたいです。
MVCという名称は、3つの要素「モデル(Model)」「ビュー(View)」「コントローラ(Controller)」の頭文字が並べられたものです。それらの関係性は↓

  • アプリケーションの外からのイベント通知はコントロータが処理し、モデルを操作します。
  • モデルが更新されるとビューに通知され、画面表示が変わります。
ルーティング

あるドメイン下のURLリクエストを全て受け取り、アプリケーションのルート定義に従って、マッピング処理を実行します。app/Http/routes.phpの中で定義します。

スキーマビルダー

スキーマビルダーとはスクリプトでテーブル作成やカラム追加などの処理が書けます。Laravelのスキーマビルダーは次のDBを対応しています。

1:Sqlite

2:MySQL

3:PostgreSQL

4:SQL Server

テーブルを作成するには、Schema::createメソッドを使用する

Schema::create('company', function($table){
	$table->increments('id');
})

最初の引数はテーブル名で、2つ目は無名関数です。新しいテーブルを定義するためのBlueprintオブジェクトを取ります。

マイグレーション

マイグレーションスキーマビルダーを使ったテーブル作成やカラム追加処理にバージョン管理機能を追加します。Laravelのマイグレーションマイグレーションフィアルに日時とクラス名を埋め込み、データベースのmigrationsテーブルで管理しています。
書くファイルにはup(),down()2つのメソッドがあって、例えばup()メソッドでテーブル作成処理を書いたら、down()メソッドでテーブル削除処理を書くようにします。

クエリビルダー

LaravelではSQLを直接書く必要がありません。メソッドチェーンを使ってSQL文を組み立てることができます。例えばusersテーブルのusernameカラムが「田中」で始まるユーザーのemailを抽出する場合は

DB::table('users')->select(['email'])->where('username', 'like', '田中*')->get();
Eloquentモデル

Laraveは「Eloquent」というO/Rマッパ(オブジェクト リレショナル マッパ)を持っています。それはデーターベースのレコードをオブジェクトとして扱うパターンの1つです。
Eloquentモデルを定義します。

class Test extends Eloquent{}

また、make:modelコマンドを使用し、Eloquentモデルを生成することもできます。

php artisan make:model Test
Bladeテンプレートエンジン

BladeテンプレートはシンプルなPHP構文のラッパーです。変数展開は{{$variable}},コメントは{{--コメント--}}。@で始まるディレクティブはPHPの制御構文(if, while, foreachなど)にそのまま置き換えられるほか、@extends, @section, @includeなどHTMLぺーじを部品下する仕組みもあります。

サービスコンテナ(IoCコンテナ

サービスコンテナはクラス間の依存を管理する強力な管理ツールです。アプリケーションのどこからでもアクセスできる「名前付きのPHPオブジェクトが入った容れ物」です。フレームワークや外部パッケージが提供する各種オブジェクトが入っていて、PHPのインターフェースやクラス名で取り出すことができます。

Laravelの学習は始めたばかりので、今回はおおざっぱで概要を簡単に説明しました。今後はアプリを実際に作って、Laravelのいいところを体験してみたいです。