LoginSignup
16
15

More than 5 years have passed since last update.

Laravelマイクロフレームワーク Lumen 5.3 ガイド

Posted at

Lumen5.2からAPIサービスやJSON APIサービスの構築を中心になるため、sessionやviewはフレームワークに含まれてないです。
Lumenのドキュメントはこちら

Lumenの概要

LumenはLaravelのコンポーネントを使用したマイクロフレームワークで、フルスタックのWebフレームワークSymfonyに対するSilexの位置付けと同じです。Lumenは高速化のために生まれて、同じくマイクロフレームワークsilexより早くて、現在最速のPHPフレームワークの一つです。

Lumenはいつ使うべきか

・大量のトラフィックを捌く必要のあるもの
・APIサーバー

インストール

composerを使って、下記のコマンドでインストールできます。

composer global require "laravel/lumen-installer"

ルーティング

ルートはroutes/web.phpに書きます。
書き方は幾つかあります。

・パラメータがある場合
$app->get('/hello/{uid}/{pass}', 'HelloController@index');

・Route Groupsで使う場合
$app->group(['namespace' => 'App\Http\Controllers'], function($group){
    $group->get('hello/{uid}/{pass}', 'HelloController@index');
});
・パラメータのバリデーションチェック
$app->get('/hello/{uid:[0-9]+}/{pass:[0-9]+}', 'HelloController@index');

Middleware

middlewareファイルはapp/Http/Middlewareに格納します。

・ルートに登録する方法

$app->get(
    '/hello/{uid}/{pass}',
    [
       'middleware' => 'before',
       'uses' => 'HelloController@index'
    ]
);

・ bootstrap/app.phpに登録な方法

$app->routeMiddleware([
    'before' => App\Http\Middleware\BeforeMiddleware::class,
]);

MiddlewareからControllerにパラメータを渡す方法

簡単な方法でrequestに追加します。

$request->attributes->add(['user' => $user]);
return $next($request);

Controller側受け取る方法

use Illuminate\Http\Request;

public function index(Request $request)
{
    $user = $request->get('user');
}

phpUnit テストの使い方

Lumenをインストールすると、デフォルトでphpunit.xmlが設置されています。

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="bootstrap/app.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false">
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory suffix="Test.php">./tests</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">./app</directory>
            <exclude>
                <file>./app/Http/routes.php</file>
            </exclude>
        </whitelist>
    </filter>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="CACHE_DRIVER" value="array"/>
    </php>
</phpunit>

テストの場所

デフォルトの状態では、tests/配下を対象として実行されます。
任意のディレクトリに変更する場合は./testsから忘れずに変更してください。

サンプルで用意されているtests/ExampleTest.phpを実行してみましょう。

Lumenプロジェクトのディレクトリで、実行します。
composerでphpunitを導入した場合は、./vendor/bin/phpunitを指定して実行します。

$ ./vendor/bin/phpunit tests/ExampleTest.php

ファイルを指定して実行する場合は上記の様になります。
全てテストする場合は、

$ ./vendor/bin/phpunit

としてください。

16
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15