Создаем фасад в 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 )
Максим Гречушников/ автор статьи
Мне 40 лет, и больше половины жизни я занимаюсь разработкой. За это время я работал с корпоративными системами, highload-проектами, интеграциями, платежными решениями, внутренними платформами и legacy-кодом, который пережил не одного разработчика. Некоторые системы, кажется, переживут и нас. Моя специализация — PHP, Laravel, backend-архитектура, DDD, тестирование, рефакторинг и техническое лидерство. Мне интересны задачи, где нужно соединить код, бизнес, данные, процессы и здравый смысл. Последние годы я много работаю с LLM и AI-инструментами: использую их для проектирования, анализа кода, документации, тестов, ревью, работы с legacy и построения инженерных процессов. Для меня LLM — это не замена разработчику, а усилитель для тех, кто умеет думать системно. В блоге я пишу о Laravel, PHP, архитектуре, тестировании, инженерной практике, управлении разработкой и реальном применении AI в работе программиста.
Понравилась статья? Поделиться с друзьями: