<commit_before># lumen-helpers
Lumen ではサポートされていない Laravel の機能をサポートするヘルパーを提供します。

Lumen は 5.2 からステートレスな API を提供する事に焦点をあてるようになったため、session などが外されています。
しかしながら軽量な Lumen は通常の WEB アプリケーション開発にも魅力的です。

幸い、Lumen は Laravel のコンポーネントを組み込む事で外された機能を追加する事もできますので、
そういった用途に便利に使える Lumen で外されてしまった Laravel の機能を提供するのがこのライブラリです。

## インストール
---
composer を使っている場合は、下記のような記述を追加する事で導入できます。

      "repositories": [
        {
          "type": "vcs",
          "url": "https://github.com/cosmicvelocity/lumen-helpers.git"
        }
      ],
      "require": {
        "cosmicvelocity/lumen-helpers": ">=1.0"
      }

セッションに関連するヘルパーを使用する場合、Lumen でセッションが使えるように設定されている必要があります。

  Lumen 5.4 でセッションを有効にする場合、bootstrap.php で下記のように Application を設定します。
  
```php
// 必要なエイリアスを追加。
$app->alias('cookie', \Illuminate\Cookie\CookieJar::class);
$app->alias('cookie', \Illuminate\Contracts\Cookie\Factory::class);
$app->alias('cookie', \Illuminate\Contracts\Cookie\QueueingFactory::class);
$app->alias('session', \Illuminate\Session\SessionManager::class);
$app->alias('session.store', \Illuminate\Session\Store::class);
$app->alias('session.store', \Illuminate\Contracts\Session\Session::class);

// 設定ファイルを読み込み。
// ※Laravel 同様の設定ファイルを config/session.php で用意する必要があります。
$app->configure('session');

$app->withFacades(true, [
  \Illuminate\Support\Facades\Config::class => 'Config'
]);

// Cookie, Session のサービスプロバイダを設定。
$app->register(\Illuminate\Cookie\CookieServiceProvider::class);
$app->register(\Illuminate\Session\SessionServiceProvider::class);

// ミドルウェアを設定。
$app->middleware([
  \Illuminate\Cookie\Middleware\EncryptCookies::class,
  \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
  \Illuminate\Session\Middleware\StartSession::class,
  \Illuminate\View\Middleware\ShareErrorsFromSession::class,
]);
```

## 使い方
現在提供されているヘルパーは下記のようなものがあります。

それぞれ Laravel の同名ヘルパーと同様の動作を行います。

- asset
- auth
- back
- csrf_field
- csrf_token
- logger
- method_field
- mix
- old
- public_path

その他、下記のような独自のヘルパーを提供します。

- redirectWithSession
Lumen の redirect ヘルパーはセッションの引継ぎは行いません。redirectWithSession ではセッションの引継ぎを行います。
ただし、事前に SessionServiceProvider などの組み込みを行い、Lumen でセッションが有効になっている必要があります。
<commit_msg>・README.md を修正。<commit_after># lumen-helpers
Lumen ではサポートされていない Laravel の機能をサポートするヘルパーを提供します。

Lumen は 5.2 からステートレスな API を提供する事に焦点をあてるようになったため、session などが外されています。
しかしながら軽量な Lumen は通常の WEB アプリケーション開発にも魅力的です。

幸い、Lumen は Laravel のコンポーネントを組み込む事で外された機能を追加する事もできますので、
そういった用途に便利に使える Lumen で外されてしまった Laravel の機能を提供するのがこのライブラリです。

## インストール
composer を使っている場合は、下記のような記述を追加する事で導入できます。

```json
{
    "repositories": [
        {
          "type": "vcs",
          "url": "https://github.com/cosmicvelocity/lumen-helpers.git"
        }
    ],
    "require": {
        "cosmicvelocity/lumen-helpers": ">=1.0"
    }
}
```

セッションに関連するヘルパーを使用する場合、Lumen でセッションが使えるように設定されている必要があります。

Lumen 5.4 でセッションを有効にする場合、bootstrap.php で下記のように Application を設定します。
  
```php
// 必要なエイリアスを追加。
$app->alias('cookie', \Illuminate\Cookie\CookieJar::class);
$app->alias('cookie', \Illuminate\Contracts\Cookie\Factory::class);
$app->alias('cookie', \Illuminate\Contracts\Cookie\QueueingFactory::class);
$app->alias('session', \Illuminate\Session\SessionManager::class);
$app->alias('session.store', \Illuminate\Session\Store::class);
$app->alias('session.store', \Illuminate\Contracts\Session\Session::class);

// 設定ファイルを読み込み。
// ※Laravel 同様の設定ファイルを config/session.php で用意する必要があります。
$app->configure('session');

$app->withFacades(true, [
    \Illuminate\Support\Facades\Config::class => 'Config'
]);

// Cookie, Session のサービスプロバイダを設定。
$app->register(\Illuminate\Cookie\CookieServiceProvider::class);
$app->register(\Illuminate\Session\SessionServiceProvider::class);

// ミドルウェアを設定。
$app->middleware([
    \Illuminate\Cookie\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
]);
```

## 使い方
現在提供されているヘルパーは下記のようなものがあります。

それぞれ Laravel の同名ヘルパーと同様の動作を行います。

- **asset**
- **auth**
- **back**
- **csrf_field**
- **csrf_token**
- **logger**
- **method_field**
- **mix**
- **old**
- **public_path**

その他、下記のような独自のヘルパーを提供します。

- **redirectWithSession**: Lumen の redirect ヘルパーはセッションの引継ぎは行いません。redirectWithSession ではセッションの引継ぎを行います。ただし、事前に SessionServiceProvider などの組み込みを行い、Lumen でセッションが有効になっている必要があります。
{'fraction_non_alphanumeric': 0.1435722411831627, 'fraction_numerical': 0.0027303754266211604, 'mean_word_length': 5.571001494768311, 'pattern_counts': {'":': 10, '<': 3, '<?xml version=': 0, '>': 29, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '271307', 'n_tokens_mistral': 2245, 'n_tokens_neox': 2173, 'n_words': 213}