Download the PHP package flytachi/winter-di without Composer
On this page you can find all versions of the php package flytachi/winter-di. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download flytachi/winter-di
More information about flytachi/winter-di
Files in flytachi/winter-di
Package winter-di
Short Description Lightweight PSR-11 DI container for Winter framework (autowiring, scopes, attributes)
License MIT
Informations about the package winter-di
Winter DI
Lightweight PSR-11 dependency injection container for the Winter framework. Autowiring, three lifecycle scopes, attribute-based configuration, and service providers.
Requirements
- PHP 8.3+
psr/container ^2.0ext-swoole(optional) — required forrequestscope coroutine isolation
Installation
Quick start
Scopes
| Scope | Lifetime | Safe in Swoole |
|---|---|---|
singleton |
One instance per process | ✓ if stateless |
transient |
New instance on every make() |
✓ always |
request |
One instance per request / coroutine | ✓ isolated via Coroutine::getContext() |
Default scope when no attribute and no manual registration: transient.
Attributes
Container API
Service providers
Scanner
Scanner walks the project tree once and dispatches every discovered class to all
registered CollectorInterface implementations — a single filesystem pass, multiple consumers.
The cache stores only the list of discovered FQCNs as a plain PHP file — fast require,
no serialization overhead. Delete the file to force a rescan.
ReflectionCache
Per-process cache for reflection objects. Creates each ReflectionClass,
ReflectionMethod, and ReflectionParameter[] once and reuses it for the
process lifetime — critical in Swoole where workers handle many requests.
Used internally by ReflectionResolver — available as a public utility for
frameworks and libraries that perform their own reflection-based parameter resolution.
Exceptions
| Exception | When |
|---|---|
ContainerException |
Circular dependency, unresolvable parameter, provider error |
NotFoundException |
No binding and class does not exist |
Both implement the PSR-11 interfaces (ContainerExceptionInterface, NotFoundExceptionInterface).
Documentation
Full documentation is available in docs/:
| File | Contents |
|---|---|
| 01-overview.md | Features, installation, quick start |
| 02-container.md | Complete Container API reference |
| 03-scopes.md | Scopes — singleton, transient, request; Swoole behaviour |
| 04-attributes.md | #[Singleton], #[Transient], #[Request], #[Autowired], #[Inject] |
| 05-providers.md | ServiceProvider — grouping bindings |
| 06-scan.md | Directory scan — auto-discovery |
| 07-reflection-cache.md | ReflectionCache — per-process reflection object cache |
License
MIT License. See LICENSE.