Section Overview
Dependency Injection
Single-path DI with explicit lifecycles, deterministic contracts, and stable boot behavior for long-running workers.
Support Semitexa
Built for developers who prefer control over magic.
Your support helps keep it fast, open, and evolving.
Route Map
Each feature page pairs live output with the source that produced it.
Container Basics
5Dependency Injection
DI Canon
One canonical DI path for container-managed classes — protected property attributes, no constructor arguments, validated at boot and enforced by lint:di.
Dependency Injection
Readonly Injection
The default tier — one instance per worker, injected into a protected property, with optional injection for dependencies that may not be installed.
Dependency Injection
Mutable Injection
#[ExecutionScoped] opts a class into a per-execution clone; #[InjectAsMutable] marks the properties re-injected on that clone.
Dependency Injection
Factory Injection
#[InjectAsFactory] injects a ContractFactory that selects among a contract's implementations by backed-enum key — not a closure, and not a new instance per call.
Dependency Injection
Service Contracts
One module declares an interface, implementations advertise themselves with SatisfiesServiceContract, and the active one is visible in contracts:list.