Сегодня мы создадим наш собственный фасад в Laravel
Что такое фасад и зачем он нужен – можно подробно почитать здесь
Мы сделаем небольшой логгер SmartLogger и скроем его реализацию под фасадом.
. ├── SmartLoggerFacade.php └── SmartLogger.php 0 directories, 2 files
SmartLogger.php
<?php namespace App\SmartLogger; class SmartLogger { public function log($text) { $path = storage_path('logs'); $myfile = fopen("{$path}/SmartLog.txt", "a"); fwrite($myfile, $text); fwrite($myfile, PHP_EOL); fclose($myfile); } }
SmartLoggerFacade.php
<?php namespace App\SmartLogger; use Illuminate\Support\Facades\Facade; class SmartLoggerFacade extends Facade { protected static function getFacadeAccessor() { return 'smartlogger'; } }
Создаем сервис провайдер
php artisan make:provider SmartLoggerServiceProvider
SmartLoggerServiceProvider.php
<?php namespace App\Providers; use App\SmartLogger\SmartLogger; use Illuminate\Support\ServiceProvider; class SmartLoggerServiceProvider extends ServiceProvider { /** * Register services. * * @return void */ public function register() { $this->app->bind('smartlogger',function(){ return new SmartLogger(); }); } /** * Bootstrap services. * * @return void */ public function boot() { // } }
Теперь откройте config\app.php и добавьте в него эти строки
Добавьте его в массив ‘providers’
... App\Providers\SmartLoggerServiceProvider::class
Добавьте его в массив “aliases”
... 'Smartlogger' => App\SmartLogger\SmartLoggerFacade::class
Теперь давайте протестируем его
Добавьте этот код в свой контроллер
SmartLogger::log("Hi");
И добавьте это в верхней части вашего контроллера
use App\SmartLogger\SmartLoggerFacade as SmartLogger;
Не стесняйтесь задавать любые вопросы