ファサードとは
ファサードとは、コンテナを通じてオブジェクトにアクセス方法を提供するクラスのことです
公式サイト
制作物のゴール
Hogeファサードの作成
hogehpgeを出力する
サービスプロバイダーの作成
$ php artisan make:provider HogeServiceProvider
Provider created successfully.
hogeクラスの登録
app/Providers/HogeServiceProvider.php
public function register()
{
$this->app->bind(
'hoge',
'App\Http\Compornents\Hoge'
);
}
bind()メソッドの第一引数にはいわゆる識別子としての名前を記載する
第二引数には、対象となる独自処理クラスであるHogeクラスを渡します。
今回の設置箇所はApp\Http\Compornents\Hogeとする。
ファサードクラスの作成
laravel/app 配下にFacadesディレクトリを作成し、その中にHoge.phpを作成
コンポーネントの登録名を取得する為のアクセサーgetFacadeAccessor()メソッドを以下のように定義します。
app/Facades/Hoge.php
<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class Hoge extends Facade
{
protected static function getFacadeAccessor() {
return 'hoge';
}
}
独自処理クラスの作成
laravel/app/Http 配下に Components ディレクトリを作成し、その中にHoge.phpを作成
app/Http/Components/Hoge.php
<?php
namespace App\Http\Components;
class Hoge
{
public function echoHoge()
{
return 'HOGEHOGE';
}
}
サービスプロパイダーとエイリアスの登録
config/app.php
<?php
return [
'providers' => [
App\Providers\HogeServiceProvider::class,
],
'aliases' => [
'Hoge' => App\Facades\Hoge::class,
],
];
tinkerで動作確認
$ php artisan tinker
Psy Shell v0.9.12 (PHP 7.3.13 — cli) by Justin Hileman
>>> Hoge::echoHoge();
=> "HOGEHOGE"
>>>