Laravel使い必見!どこでもLaravelを使用する方法

こんにちは、コバヤシです。

「Laravel管理外のページでLaravelを組み込みたい!」ってことはありませんか?
1サイトまるごとLaravelで構築するのが通常の構築方法だと思いますが、案件によってはLaravel管理外(フレームワーク外)でもLaravelを使用したいこともあるはず。。 例えば、稼働中のサイトへLaravelで管理している情報を表示するとか。。。

どこでもLaravelを使いたい!、そんなLaravel好きに、どこでもLaravelを使用する方法をお教えします。

ズバリこのコードを書くだけ

以下のコードをLaravelを使用したいPHPファイルに記述すればOKです。
(読込部分のパスは適宜変更してください)

<?php
require_once '../laravel/vendor/autoload.php';
$app = require_once '../laravel/bootstrap/app.php';

$app->make('Illuminate\Contracts\Http\Kernel')
  ->pushMiddleware(\App\Http\Middleware\EncryptCookies::class)
  ->pushMiddleware(\Illuminate\Session\Middleware\StartSession::class)
  ->handle(Illuminate\Http\Request::capture());

pushMiddlewareでEncryptCookiesとStartSessionを指定しているので、ログインの判定もできます。
他に利用したいミドルウェアがあればpushMiddlewareで追加すれば使えるはず。

後は、こんな感じで、

<?php
require_once '../laravel/vendor/autoload.php';
$app = require_once '../laravel/bootstrap/app.php';

$app->make('Illuminate\Contracts\Http\Kernel')
  ->pushMiddleware(\App\Http\Middleware\EncryptCookies::class)
  ->pushMiddleware(\Illuminate\Session\Middleware\StartSession::class)
  ->handle(Illuminate\Http\Request::capture());  
  
  
$user = \App\User::find(1);
dd($user);

Eloquentでも何でも使えるので、後はご自由に。

もちろん、以下のようにすればCKFinderの認証処理でも使用できます。

ckfinder/config.php

<?php
require_once '../laravel/vendor/autoload.php';  
$app = require_once '../laravel/bootstrap/app.php'; 



$app->make('Illuminate\Contracts\Http\Kernel')
  ->pushMiddleware(\App\Http\Middleware\EncryptCookies::class)
  ->pushMiddleware(\Illuminate\Session\Middleware\StartSession::class)
  ->handle(Illuminate\Http\Request::capture());   
   
$config['authentication'] = function () {
  return Auth::check();
};

まとめ

このコードを使えば、簡単にLaravelを組み込むことができます。
「どこでもLaravelを使いたい!」って方にぜひ。
(基本的には全部Laravel内に収めましょう。。)