kynetcode/wpzylos-container
Composer 安装命令:
composer require kynetcode/wpzylos-container
包简介
PSR-11 compatible dependency injection container with auto-wiring for WPZylos framework
README 文档
README
PSR-11 compatible dependency injection container with auto-wiring for WordPress plugins.
📖 Full Documentation | 🐛 Report Issues
✨ Features
- PSR-11 Compatible — Implements
ContainerInterface - Auto-wiring — Automatic constructor injection via reflection
- Singletons — Shared instances across resolves
- Factories — New instances per resolution
- Aliases — Map alternative names to services
- Tagged Services — Group related services
- Circular Dependency Detection — Prevents infinite loops
- Definition API — Fluent service configuration
📋 Requirements
| Requirement | Version |
|---|---|
| PHP | ^8.0 |
🚀 Installation
composer require KYNetCode/wpzylos-container
📖 Quick Start
use WPZylos\Framework\Container\Container; $container = new Container(); // Bind a singleton (shared instance) $container->singleton(DatabaseConnection::class, fn() => new DatabaseConnection()); // Bind a factory (new instance each time) $container->bind(Logger::class, fn() => new Logger()); // Auto-wiring (automatic dependency resolution) $container->bind(UserService::class); // Resolve $db = $container->get(DatabaseConnection::class); $logger = $container->get(Logger::class); $userService = $container->get(UserService::class);
🏗️ Core Features
Singleton Binding
// Registered once, shared everywhere $container->singleton(Config::class, fn() => new Config('config.php')); $config1 = $container->get(Config::class); $config2 = $container->get(Config::class); // $config1 === $config2
Factory Binding
// New instance every time $container->bind(Request::class, fn() => new Request()); $req1 = $container->get(Request::class); $req2 = $container->get(Request::class); // $req1 !== $req2
Auto-wiring
class UserService { public function __construct( private DatabaseConnection $db, private Logger $logger ) {} } // Container automatically resolves dependencies $container->bind(UserService::class); $userService = $container->get(UserService::class);
Interface Binding
$container->bind(CacheInterface::class, RedisCache::class); $container->singleton(LoggerInterface::class, FileLogger::class);
Tagged Services
$container->tag([EmailNotifier::class, SlackNotifier::class], 'notifiers'); $notifiers = $container->tagged('notifiers'); foreach ($notifiers as $notifier) { $notifier->send($message); }
Aliases
$container->singleton(Connection::class, fn() => new Connection()); $container->alias('db', Connection::class); $db = $container->get('db'); // Same as get(Connection::class)
Managing Services
// Check if bound $container->has(Logger::class); // true // Remove a service $container->forget(Logger::class); // List all registered keys $keys = $container->keys();
📦 Related Packages
| Package | Description |
|---|---|
| wpzylos-core | Application foundation |
| wpzylos-config | Configuration management |
| wpzylos-scaffold | Plugin template |
📖 Documentation
For comprehensive documentation, tutorials, and API reference, visit wpzylos.com.
☕ Support the Project
📄 License
MIT License. See LICENSE for details.
🤝 Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Made with ❤️ by KYNetCode
统计信息
- 总下载量: 10
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 2
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: GPL-2.0-or-later
- 更新时间: 2026-06-16