viragrajput/virag-container

依赖注入的容器包

v1.1.2 2024-04-02 09:55 UTC

This package is auto-updated.

Last update: 2024-10-02 11:00:32 UTC


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');

上下文绑定

您可以使用whenneeds方法定义上下文绑定

$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许可证