cloud-castle/provider

Сервис-провайдеры для PHP 8.1+ поверх cloud-castle/di: модульная регистрация сервисов, отложенные (deferred) провайдеры и загрузочное ядро (bootstrap) приложения.

Maintainers

Package info

gitverse.ru/cloud-castle/provider

Homepage

Issues

Documentation

pkg:composer/cloud-castle/provider

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

v1.0.2 2026-07-29 08:35 UTC

This package is auto-updated.

Last update: 2026-07-29 09:12:03 UTC


README

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

CloudCastle Provider

CloudCastle Provider

Packagist Version Downloads PHP Version License

Двухфазная загрузка сервис-провайдеров в контейнер cloud-castle/di: сначала register у всех, затем boot у всех. Отложенные провайдеры загружаются лениво — при первом обращении к их сервисам.

Установка

composer require cloud-castle/provider

Требуется PHP 8.1+ и cloud-castle/di.

Быстрый старт

<?php

use CloudCastle\DI\Container;
use CloudCastle\Provider\AbstractServiceProvider;
use CloudCastle\Provider\ProviderKernel;

final class MailProvider extends AbstractServiceProvider
{
    public function register(Container $container): void
    {
        $container->addDefinitions(['mailer' => static fn () => new Mailer()]);
    }

    public function boot(Container $container): void
    {
        // Здесь уже доступны сервисы других провайдеров.
    }
}

$kernel = new ProviderKernel($container);
$kernel->register(new MailProvider())
       ->register(new LogProvider());
$kernel->boot(); // register у всех, затем boot у всех

Возможности

  • Двухфазная загрузкаProviderKernel::boot() вызывает register у всех провайдеров и лишь затем boot, поэтому на этапе boot доступны сервисы любого провайдера. Повторный boot() идемпотентен.
  • Отложенные провайдеры (DeferredServiceProvider) — регистрируются лениво при первом обращении к любому из объявленных provides() сервисов; тяжёлые провайдеры не грузятся, пока не понадобятся. Один провайдер грузится один раз.
  • AbstractServiceProvider — база с пустыми фазами: переопределяйте только нужную (register и/или boot).
  • Fluent-регистрацияregister() возвращает загрузчик для цепочки вызовов.

Сравнение с аналогами

Возможностьproviderlaravel (illuminate)pimpleleague/containersymfony (bundles)php-di
Двухфазность register+boot🏆 ✅⚠️
Отложенные провайдеры⚠️
Идемпотентная загрузка🏆 ✅⚠️⚠️
Автономность (без фреймворка)🏆 ✅
Runtime-зависимостей🏆 1 (di)много01много0

Когда применять. provider уместен как лёгкий механизм модульной загрузки для приложений на cloud-castle/di: разнести регистрацию сервисов по провайдерам, получить предсказуемый порядок и ленивую загрузку тяжёлых модулей. Если вы уже внутри Laravel или Symfony — используйте их штатные провайдеры/бандлы: этот пакет нацелен на автономный DI вне тяжёлого фреймворка.

Разработка

composer install
composer check    # линтеры + статический анализ + тесты
composer fix      # автоисправления (Rector, PHP CS Fixer, PHPCBF)
composer ci       # полный CI-пайплайн локально

Полный список команд с описаниями: composer run-script --list.

Документация

Лицензия

MIT © CloudCastle (alex-4-17@yandex.ru)

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano