Looking to hire Laravel developers? Try LaraJobs

laravel-sms maintained by coolycow

Description
Laravel package for sms
Author
Last update
2026/04/24 12:57 (dev-main)
License
Links
Downloads
197

Comments
comments powered by Disqus

Laravel SMS

Пакет для Laravel, позволяющий отправлять SMS-сообщение, используя несколько провайдеров.

Установка

composer require coolycow/laravel-sms

Далее:

php artisan vendor:publish --provider="Coolycow\LaravelSms\SmsServiceProvider" --tag=config

Настройка

Необходимо указать конкретный класс, который отвечает за SMS, а также привязать провайдеров SMS.
Создаём свой Service Provider со следующим содержимым (название может быть другим):

<?php

namespace App\Providers;

use App\Clients\Sms\Contracts\SmsMessageInterface;
use App\Clients\Sms\Contracts\SmsProviderInterface;
use App\Clients\Sms\Providers\SmsDiscountProvider;
use App\Clients\Sms\Providers\SmsProstoProvider;
use App\Models\Sms;
use Illuminate\Support\ServiceProvider;

class NotificationServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register(): void
    {
        // Переопределяем биндинг интерфейса SmsMessageInterface.
        $this->app->bind(SmsMessageInterface::class, Sms::class);
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot(): void
    {
        // В зависимости от конфига биндим провайдеры.
        if (config('settings.sms_provider', 'prosto') === 'prosto') {
            $this->app->bind(SmsProviderInterface::class, SmsProstoProvider::class);
        } else {
            $this->app->bind(SmsProviderInterface::class, SmsDiscountProvider::class);
        }
    }
}

Соответственно модель App\Models\Sms должна реализовывать SmsMessageInterface, а провайдеры SMS - SmsProviderInterface. В примере выше используется два провайдера, которые подключаются в зависимости от настроек основного приложения.