ファサードクラス一覧


 悩み事

ファサードを介さずにクラスを利用したい
ファサードと関連付いたクラスがどれかわからない

これらはLaraveの構造を理解する上でも大きなヒントになります

 解決方法

これらは公式リファレンスなどにも明記されていますが、
ファサードと実際のクラスの一覧は次の通りです

ファサードクラス一覧
Facade Class Reference

実際にファサードを利用しない場合は次の様になります

<?php
namespace Acme\Controllers;

use Illuminate\Config\Repository as Config;

class HomeController extends BaseController
{

    /** @var Config */
    protected $config;

    /**
     * @param Config $config
     */
    public function __construct(Config $config)
    {
        $this->config = $config;
    }
}

上記の様にコンストラクタインジェクションを利用するか、
必要に応じてインスタンスを生成することでファサードを利用しないコーディングが可能です

またこれらはパッケージ開発時にも有用です
ファサードと実際のクラスの関連を理解する事で、ファサードを利用したテストコードが苦手な方や、
Laravelコンポーネントを利用しつつも、フレームワークにあまり依存しないパッケージ作りなども可能です

 アドバイス

これらはサービスプロバイダーでの実装にも使用する事が出来ます

フィルターやviewコンポーザー等を登録する場合は、
global.phpに記述せずに、以下の様にサービスプロバイダーで実装することもできます

<?php
namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ApplicationServiceProvider extends ServiceProvider
{

    public function register()
    {
        // view composer
        $this->app->view->composer('index', 'App\Composers\IndexComposer');
        // register filter
        $this->app->router->filter('user.filter', 'App\Filters\UserFilter');
    }
}

$this->appIlluminate\Container\Containerを継承したIlluminate\Foundation\Applicationオブジェクトです
IoCコンテナを利用してそれぞれのインスタンスにアクセスする事が出来ます

パッケージ作りや、ソースコードのリファクタリングなどに利用してみましょう


Author:Yuuki Takezawa