bitexpert/disco

依赖注入容器


README

此包提供了一个兼容PSR-11的基于注解的依赖注入容器。查看disco-demos项目了解如何使用Disco。

Build Status Coverage Status Mastodon Follow

安装

安装bitexpert/disco的首选方式是通过Composer。您可以将其作为依赖项添加,如下所示

composer.phar require bitexpert/disco

使用方法

在启动逻辑中使用以下代码实例化Disco。创建一个\bitExpert\Disco\AnnotationBeanFactory的实例,并将其注册到\bitExpert\Disco\BeanFactoryRegistry。第二步很重要,因为Disco需要在一些没有容器实例访问的地方获取活动容器实例。

<?php

$beanFactory = new \bitExpert\Disco\AnnotationBeanFactory(MyConfiguration::class);
\bitExpert\Disco\BeanFactoryRegistry::register($beanFactory);

接下来,您需要创建一个配置类MyConfiguration,并用@Configuration注解来注释它。

<?php

use bitExpert\Disco\Annotations\Configuration;

/**
 * @Configuration
 */
class MyConfiguration
{
}

要声明配置条目,1) 在MyConfiguration类中添加一个方法,2) 用@Bean注解该方法。这样做会将实例注册到Disco中,并使用方法返回值指定的类型。主要标识符是方法名称

<?php

use bitExpert\Disco\Annotations\Bean;
use bitExpert\Disco\Annotations\Configuration;
use bitExpert\Disco\Helper\SampleService;

/**
 * @Configuration
 */
class MyConfiguration
{
    /**
     * @Bean
     */
    public function mySampleService() : SampleService
    {
        return new SampleService();
    }
}

要使Disco返回具有id mySampleService的条目,请调用\bitExpert\Disco\AnnotationBeanFactoryget()方法,如下所示

<?php

$beanFactory->get('mySampleService');

文档

文档位于docs树中,可以使用bookdown进行编译。

$ php ./vendor/bin/bookdown docs/bookdown.json
$ php -S 0.0.0.0:8080 -t docs/html/

然后,将您的浏览器指向http://localhost:8080/

贡献

请随意fork并扩展现有功能或添加新功能,并将您的更改作为pull request发送!为了建立一致的代码质量,请为所有更改提供单元测试,并调整文档。

想要贡献吗?

如果您觉得有东西可以分享,那么我们非常乐意欢迎您。查看贡献指南了解如何操作,以及我们对您的期望。

资源

许可证

Disco是在Apache 2.0许可证下发布的。