cekta / di
psr/container implementation for humans
v3.0.0
2026-02-15 11:07 UTC
Requires
- php: >=8.2
- psr/container: >=2.0
Requires (Dev)
- infection/infection: @stable
- phpstan/phpstan: @stable
- phpunit/phpunit: @stable
- squizlabs/php_codesniffer: @stable
Provides
README
A modern, high-performance PSR-11 Container implementation designed for developers who value simplicity and performance.
✨ Features
- 🚀 Zero Runtime Overhead - All dependencies are resolved during compilation, not at runtime
- No runtime reflection - All dependency resolution happens during compilation
- Predictable performance - No dynamic analysis slowing down your application
- ⚡ OPcache Ready - Generated code works perfectly with PHP's opcode cache
- 🔧 Flexible Configuration - Mix autowiring with explicit configuration
- 📦 Full PSR-11 Compliance - Implements the standard Container Interface
- 🔄 Modern PHP Support - Works with Union Types, Intersection Types, DNF Types, and variadic arguments
- 🧩 Interface & Abstract Class Support - Full dependency injection for abstractions
- 🎯 High Code Quality - Rigorously tested with mutation testing
- ✅ Easy debugging - Generated container is plain PHP code you can read and understand
📦 Installation
composer require cekta/di
🚀 Quick Start
src/Controller.php
<?php namespace App; class Controller { }
bin/build.php
<?php require __DIR__ . './../vendor/autoload.php'; // Configure your dependencies. $builder = new \Cekta\DI\ContainerBuilder( containers: [\App\Controller::class], fqcn: 'App\\Runtime\\Container' ); // Generate the container $code = $builder->compile(); file_put_contents(__DIR__ . '/../runtime/Container.php', $code);
CLI: generate container
php bin/build.php
app.php
<?php require __DIR__ . './vendor/autoload.php'; // Use it in your application $container = new \App\Runtime\Container(); $controller = $container->get(\App\Controller::class);
📚 Documentation
🤝 Community
Join the Telegram chat for discussions in English or Russian.