wavevision/di-service-annotation

此包已被弃用,不再维护。未建议替代包。

使用注解注册Nette框架的DI服务。

4.0.1 2020-10-21 14:38 UTC

README

Wavevision s.r.o.

DIService Annotation

CI Coverage Status PHPStan

通过Doctrine注解、工厂生成器和注入生成器帮助注册Nette DI服务的辅助工具。

安装

composer require --dev wavevision/di-service-annotation

注意:如果需要严格返回类型支持,请安装phpstan-nette

使用方法

注解您的服务

use Wavevision\DIServiceAnnotation\DIService;

/**
 * @DIService(params={"%wwwDir%"}, generateInject=true, generateFactory=true)
 */
class ExampleService
{

}

创建运行脚本

例如 bin/extract-services.php

use Wavevision\DIServiceAnnotation\Configuration;
use Wavevision\DIServiceAnnotation\Runner;

Runner::run(new Configuration('sourceDirectory', 'services.neon'));

通过运行以下命令运行此脚本:php bin/extract-services.php

将生成以下

注解选项

  • enableInject: bool – 将向生成的服务配置添加 inject: on(默认 true
  • generateComponent: bool – 将生成 <className>Component 特性,并实现工厂和 createComponent<ClassName>
  • generateFactory: bool – 将生成 <ClassName>Factory 接口,并实现 create 函数
  • generateInject: bool – 将生成 Inject<ClassName> 特性,并实现属性 $<className>inject<ClassName> 函数
  • params: string[] – 要传递给服务构造函数的DI参数列表
  • tags: string[] – 在生成的配置中使用服务的标签列表

有关配置选项,请参阅配置属性

配置选项

必需

  • sourceDirectory: string – 服务的位置
  • outputFile: string – 注册的服务输出文件

可选

  • setMask: string – 文件定位器掩码 - 默认 *.php
  • setFileMapping: array – 用于按命名空间分割配置的映射
$configuration->setFileMapping([
    'RootNamespace\Namespace1' => 'config1.neon',
    'RootNamespace\Namespace2' => 'config2.neon',
]);
  • setInjectGenerator: Inject – 设置自定义注入生成器
  • setFactoryGenerator: Factory – 设置自定义工厂生成器
  • setComponentFactory: Component – 设置自定义组件生成器
  • setRegenerate: bool – 每次运行时重新生成所有生成的代码 - 默认 false
  • enableFileValidation – 在读取注解之前检查每个文件是否有致命错误,错误时跳过文件
    • autoloadFile: string – 类自动加载文件,例如 vendor/autoload.php
    • tempDir: string – 启用缓存,缓存文件目录,仅验证更改的文件