laravelにはFacadeっていうものがありますね。 以前Facadeを使用したので、その時メモ。
サービスプロバイダーを作る
php artisan make:provider FileManagementProvider
上記のコマンドでサービスプロバイダーのファイルを生成可能。
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class FileManagementServiceProvider extends ServiceProvider { public function boot() { // } public function register() { $this->app->bind( 'fileManagement', 'App\Services\FileManagement' ); } }
registerでlaravelのコンテナに登録する。 その際、どのクラスをどんな名前で登録するのかを記述する。 今回は、App\Services\FileManagementクラスをfileManagementという名前で登録します。
App\Services\FileManagementクラスを作る
<?php namespace App\Services; class FileManagement { public function imageOrText() { } }
app/Facadeディレクトリの中に、ファイルを作成する
<?php namespace App\Facades; use Illuminate\Support\Facades\Facade; class FileManagement extends Facade { protected static function getFacadeAccessor() { return 'fileManagement'; } }
ここでさっき書いた名前をreturnします。
providersに追加
app.phpの中のprovidersに作ったproviderクラスを追加。
処理の流れ
おそらくこんな感じの流れになるのではないでしょうか。
providersが読み込まれる
作ったproviderをapp.phpのprovidersに追加しました。 laravelは初期起動時にそれらを全て読み込みます。
今回の例で言えば、以下。
public function register() { $this->app->bind( 'fileManagement', 'App\Services\FileManagement' ); }
'App\Services\FileManagement'が呼ばれる。
Viewでファサードを呼び出す
@foreach($allUploadedFiles as $file) @if(FileManagement::imageOrText($file->path)) "画像" @else "画像じゃないよ" @endif @endforeach