viragrajput / virag-container
依赖注入的容器包
v1.1.2
2024-04-02 09:55 UTC
Requires
- php: ^7.4 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.0
README
Virag Container是一个灵活且轻量级的依赖注入容器,旨在简化PHP应用程序中类依赖和服务的管理。
使用Virag Container,您可以访问一套全面的特性,这些特性对于有效的依赖管理至关重要。这包括将类和接口绑定到具体实现,解析依赖关系,定义单例绑定和管理上下文绑定。此外,服务提供者、自定义解析器、屈折变换器、自动连接和工厂等高级功能也无缝集成,提供了灵活性和可扩展性。
此外,Virag Container注重性能,确保在您的应用程序中具有最小开销和最佳效率。无论您是构建小型项目还是大型应用程序,Virag Container都提供了组织和管理代码库所需的有效工具。
安装
您可以通过Composer安装Virag Container。在您的终端中运行以下命令
composer require viragrajput/virag-container
用法
基本用法
首先,创建容器的一个实例
use Virag\Container\Container; $container = new Container();
绑定类或接口
您可以使用bind方法将类或接口绑定到具体实现
$container->bind('LoggerInterface', 'FileLogger');
解析依赖
要解析依赖,请使用make方法
$logger = $container->make('LoggerInterface');
这将解析FileLogger实例。
单例绑定
可以使用singleton方法定义单例绑定
$container->singleton('DatabaseConnection', function () { return new DatabaseConnection(); });
构造函数注入
容器支持构造函数注入。例如
class UserRepository { protected $db; public function __construct(DatabaseConnection $db) { $this->db = $db; } } $container->bind('UserRepository', 'UserRepository'); $userRepository = $container->make('UserRepository');
上下文绑定
您可以使用when和needs方法定义上下文绑定
$container->when('PaymentGateway') ->needs('LoggerInterface', 'PaymentLogger');
高级用法
服务提供者
您可以将服务提供者注册到应用程序的引导过程中
$container->addServiceProvider('App\Providers\DatabaseServiceProvider');
自定义解析器
为特定绑定定义自定义解析器
$container->registerCustomResolver('MailService', function ($container) { return new ExternalMailService($container->make('Config')->get('mail.api_key')); });
屈折变换器
屈折变换器允许您在实例化后修改实例
$container->addInflector('LoggerAwareInterface', function ($loggerAware) use ($container) { $loggerAware->setLogger($container->make('Logger')); });
自动连接
启用自动连接以自动解析类依赖
$container->enableAutoWiring();
工厂
使用工厂进行动态实例创建
$container->bindFactory('PaymentGateway', function ($container) { return new PaymentGateway($container->make('Config')->get('payment.gateway')); });
示例
在存储库中的"文档"文件夹中探索Virag Container包的各种用法示例。这些示例涵盖了广泛的场景,以帮助您有效利用包的特性。
贡献
我们欢迎社区贡献!如果您有任何建议、发现错误或想添加新功能,请毫不犹豫地提交问题或拉取请求。您的贡献有助于改进包,使每个人受益。让我们共同努力,创造伟大事物!
许可证
Virag Container是开源软件,许可协议为MIT许可证。