krubio/perfect-container-psr-11
Composer 安装命令:
composer require krubio/perfect-container-psr-11
包简介
A PSR-11 dependency injection container with autowiring support
README 文档
README
Quality Assurance
- ✅ 100% Test Coverage with PHPUnit 12
- 📊 PHPStan Level 10 - Maximum static analysis quality
- 🚀 Zero Dependencies - Pure PHP implementation
- 🎯 PHP 8.3+ with strict types and modern features
- 🛡️ Exception-Based Error Handling for robust security
Features
- PSR-11 Compliant: Full implementation of
Psr\Container\ContainerInterface - Smart Autowiring: Automatic reflection-based dependency resolution
- Dual Mode Operation: Toggle autowiring on/off via constructor parameter
- Intelligent Resolution: Class names automatically instantiated, other values returned as-is
- Factory Support: Closure factories for on-demand service creation
- Interface Binding: Simple interface-to-implementation mapping
Installation
composer require perfectapp//perfect-container-psr-11
Usage
Instantiation
use PerfectApp\Container\Container; // Autowiring enabled (default) $container = new Container(true); // Autowiring disabled (explicit registration only) $container = new Container(false);
Registering Dependencies
// Class name (automatically instantiated when retrieved) $container->set(LoggerInterface::class, FileLogger::class); // Ready-made instance $container->set('database', new PDO('mysql:host=localhost;dbname=test', 'user', 'pass')); // Closure factory $container->set('config', function () { return [ 'database_host' => 'localhost', 'database_name' => 'my_database' ]; }); // Simple value $container->set('app.version', '1.0.0');
Resolving Dependencies
// Autowired resolution $service = $container->get(UserService::class); // Manual resolution $version = $container->get('app.version'); // Check existence if ($container->has(SomeClass::class)) { // Entry exists }
Example
use PerfectApp\Container\Container; interface Logger { public function log(string $message): void; } class FileLogger implements Logger { public function log(string $message): void { file_put_contents('log.txt', $message, FILE_APPEND); } } class UserService { public function __construct(private Logger $logger) {} public function createUser(string $username): void { $this->logger->log("User $username created"); } } $container = new Container(true); $container->set(Logger::class, FileLogger::class); $userService = $container->get(UserService::class); $userService->createUser('john@example.com');
Exception Handling
-
NotFoundExceptionInterface: When a dependency cannot be found
-
ContainerExceptionInterface: For errors during dependency resolution
Versioning
This project follows Semantic Versioning. Current version: 2.0.0
License
This library is open-sourced software licensed under the MIT license.
krubio/perfect-container-psr-11 适用场景与选型建议
krubio/perfect-container-psr-11 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.34k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2025 年 09 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 krubio/perfect-container-psr-11 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 krubio/perfect-container-psr-11 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 2.34k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 13
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-09-19