Download the PHP package phpsoftbox/container without Composer
On this page you can find all versions of the php package phpsoftbox/container. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download phpsoftbox/container
More information about phpsoftbox/container
Files in phpsoftbox/container
Package container
Short Description Dependency injection container for the PhpSoftBox framework
License MIT
Informations about the package container
PhpSoftBox Container
About
phpsoftbox/container — DI-контейнер для PhpSoftBox с PSR-11 API и дополнительными runtime-операциями.
Ключевые возможности:
get()/has()(PSR-11)- runtime
set()определений make()для не-shared резолва entrycall()для вызова callable с DI параметров- autowiring по type-hint
- decorators (
decorate) - native lazy-прокси на PHP 8.5 (
ReflectionClass::newLazyProxy) - build-time валидация lazy-конфигурации
- compilation metadata cache (
enableCompilation()) - warmup (
warmup())
Требования
- PHP
^8.5(lazy-объекты используют API Reflection PHP 8.5) psr/container:^2.0
Quick Start
Production
enableCompilation() записывает container.compiled.php с fingerprint конфигурации и lazy metadata.
Для CI/deploy можно прогреть контейнер:
warmup([], false) прогревает wiring без инициализации lazy-объектов.
Файлы кеша пишутся атомарно (tmp + rename()), fingerprint учитывает сигнатуры конструкторов, вшитые
в AOT-класс, поэтому после composer update устаревший класс не подключается.
Сброс кеша компиляции по каталогу (без сборки определений) — для CLI-команды и шага деплоя:
Интерполяция строк
{entry.id} подставляется только в явном string('...'). Обычные строки в определениях и строковые
аргументы call()/make() (например, параметры маршрута из URL) передаются как есть — пользовательский
ввод не может прочитать значения контейнера.
Переменные окружения
env('NAME', $default) сначала читает EnvStorage из phpsoftbox/env (значения из .env), затем
$_ENV, $_SERVER и getenv(). Пакет phpsoftbox/env опционален: без него используются только
глобальные источники.
Сброс состояния в воркерах
В долгоживущем процессе (воркер очереди, HTTP-воркер) сервисы-синглтоны переживают задачу: кеши, identity map ORM,
очереди cookie переходят в следующую. Общий хук — ServicesResetter: вызывайте reset() после каждой задачи.
- Сбрасываются только уже созданные сервисы: реализующие
PhpSoftBox\Container\Reset\ResetInterfaceи перечисленные в карте. Ради сброса ничего не создаётся (Container::resolvedInstances()/resolvedInstance()). - Ошибка одного сброса не прерывает остальные; первое исключение бросается после обхода.
- Несуществующий метод в карте —
LogicException: ошибка конфигурации видна сразу.
PhpStorm meta
Чтобы PhpStorm выводил тип сервиса по SomeService::class, можно добавить в корень
проекта .phpstorm.meta.php:
После этого IDE должна понимать:
Оглавление
- Документация
- 1. About
- 2. Quick Start
- 3. Definitions DSL
- 4. Runtime API
- 5. Lazy + Compilation
- 6. PHP-DI parity gap
- 7. Full Examples