incompass / injection-bundle
为 Symfony 注入注解
1.4.0
2019-04-10 20:57 UTC
Requires
- php: >= 7.1
- doctrine/annotations: ^1.6
- symfony/config: ^3.4 | ^4.0
- symfony/dependency-injection: ^3.4 | ^4.0
- symfony/finder: ^3.4 | ^4.0
- symfony/http-kernel: ^3.4 | ^4.0
Requires (Dev)
- phpunit/phpunit: ^7.4
- roave/security-advisories: dev-master
README
先决条件
此扩展包需要 symfony 3.4+ 或 4.0+
安装
使用 composer 安装
composer require incompass/injection-bundle
启用扩展包
在 bundles.php 中添加
return [ // ... Incompass\InjectionBundle\InjectionBundle::class => ['all' => true] // ... ];
用法
默认情况下,该扩展包会在 src
目录中查找以 App
为基础命名空间的服务进行注入。要更改此设置,请添加以下配置
$c->loadFromExtension('injection', [ 'paths' => [ 'code' => 'MyApp\\' ] ]);
要配置环境组,请将以下内容添加到您的扩展包配置中
$c->loadFromExtension('injection', [ 'environment_groups' => [ [ 'group' => 'all', 'environments' => ['dev', 'staging', 'prod'] ], [ 'group' => 'prod-like', 'environments' => ['staging', 'prod'] ], ] ]);
基本注入
要注入不需要特殊配置的简单服务,请执行以下操作
/** * @Inject() */ class SomeService { // ... }
服务 ID
默认情况下,该扩展包将使用类名作为服务 ID。如果您想更改 ID,请使用 @Inject
注解中的 id 参数
/** * @Inject(id="some_service") */ class SomeService { // ... }
参数
要向服务添加参数,请使用 @Argument
注解添加参数属性。可以添加多个参数。
/** * @Inject( * arguments={ * @Argument(name="constructorParameterName", value="%parameter_name%") * } * ) */ class SomeService { // ... }
要将对另一个服务的引用作为参数值添加,请将值前面加上 @
/** * @Inject( * arguments={ * @Argument(name="constructorParameterName", value="@SomeOtherServiceClass") * } * ) */ class SomeService { // ... }
标签
要标记服务,请使用 @Tag
注解添加标签属性。可以添加多个标签。
/** * @Inject( * tags={ * @Tag(name="doctrine.orm.entity_listener", attributes={ * "entity"=User::class, * "event"=\Doctrine\ORM\Events::prePersist, * "method"="prePersist" * }) * ) */ class SomeService { // ... }
未记录的其他功能
- 工厂
- 方法调用
- 环境
- 子定义
- 别名
- 抽象定义
- 自动配置
- 自动连接
- 懒加载
- 公开/私有
- 共享
更多文档即将推出