Создаем фасад в 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;

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

Рейтинг
( 2 оценки, среднее 5 из 5 )
Maxyc Webber/ автор статьи
Мне 35 лет. Опыт профессиональной разработки 15 лет. Занимаюсь разработкой и поддержкой корпоративных систем автоматизации бизнеса, а также высоконагруженными проектами. Мне нравится решать нестандартные проблемы бизнеса. Имею опыт формирования команд под проект, налаживания процесса разработки, коммуникации программистов и заказчиков. Есть опыт работы с зарубежными заказчиками (ОАЭ, Польша, Германия, Швейцария).
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

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