bitexpert / disco
依赖注入容器
Requires
- php: ^7.2.0
- bitexpert/slf4psrlog: ^0.1.3
- doctrine/annotations: ^1.3.0
- ocramius/proxy-manager: ^2.2.0
- psr/container: ^1.0.0
Requires (Dev)
- bitexpert/phing-securitychecker: ^0.3.0
- bookdown/bookdown: @dev
- mikey179/vfsstream: ^1.6
- monolog/monolog: ^1.22.1
- phing/phing: ^2.16.0
- phpbench/phpbench: ^0.13.0
- phpdocumentor/phpdocumentor: v2.9.0
- phpunit/phpunit: ^6.1.3
- squizlabs/php_codesniffer: ^2.9.00
Provides
- dev-master
- v0.10.0
- v0.9.0
- v0.8.0
- v0.7.0
- v0.6.3
- v0.6.2
- v0.6.1
- v0.6.0
- v0.5.0
- v0.4.0
- 0.3.0
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.2
- 0.1.1
- 0.1.0
- dev-release/r0.9.0
- dev-review-docs
- dev-release/r0.8.0
- dev-release/r0.7.0
- dev-release/r0.6.0
- dev-release/r0.5.0
- dev-release/r0.4.0
- dev-release/r0.3.0
- dev-release/r0.2.0
- dev-release/r0.1.0
This package is auto-updated.
Last update: 2024-09-06 09:58:23 UTC
README
此包提供了一个兼容PSR-11的基于注解的依赖注入容器。查看disco-demos项目了解如何使用Disco。
安装
安装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\AnnotationBeanFactory
的get()
方法,如下所示
<?php $beanFactory->get('mySampleService');
文档
$ php ./vendor/bin/bookdown docs/bookdown.json $ php -S 0.0.0.0:8080 -t docs/html/
然后,将您的浏览器指向http://localhost:8080/
贡献
请随意fork并扩展现有功能或添加新功能,并将您的更改作为pull request发送!为了建立一致的代码质量,请为所有更改提供单元测试,并调整文档。
想要贡献吗?
如果您觉得有东西可以分享,那么我们非常乐意欢迎您。查看贡献指南了解如何操作,以及我们对您的期望。
资源
- sitepoint.com: 使用设计模式和依赖注入的新视角:Disco
- php[architect]: 教育站:您的依赖注入需要Disco
- 演讲:在PHPUGFFM V/2016上的Disco - 依赖注入的新视角
许可证
Disco是在Apache 2.0许可证下发布的。