Создаем фасад в Laravel

Создаем фасад в Laravel

Сегодня мы создадим наш собственный фасад в 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;

Не стесняйтесь задавать любые вопросы 🙂

admin

admin

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

%d такие блоггеры, как: