incompass/injection-bundle

为 Symfony 注入注解

安装量: 2,725

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 9

分支: 0

类型:symfony-bundle

1.4.0 2019-04-10 20:57 UTC

This package is auto-updated.

Last update: 2023-10-11 13:28:04 UTC


README

Build Status Latest Stable Version Scrutinizer Code Quality Code Coverage

先决条件

此扩展包需要 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 {
    // ...
}

未记录的其他功能

  • 工厂
  • 方法调用
  • 环境
  • 子定义
  • 别名
  • 抽象定义
  • 自动配置
  • 自动连接
  • 懒加载
  • 公开/私有
  • 共享

更多文档即将推出