wavevision / di-service-annotation
此包已被弃用,不再维护。未建议替代包。
使用注解注册Nette框架的DI服务。
4.0.1
2020-10-21 14:38 UTC
Requires
- php: >=7.4
- doctrine/annotations: ^1.8
- nette/finder: ^2.5
- wavevision/utils: ^2.13
Requires (Dev)
- mikey179/vfsstream: ^1.6
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^9.4
- wavevision/coding-standard: ^5.2
This package is auto-updated.
Last update: 2024-08-19 23:43:07 UTC
README
DIService Annotation
通过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
– 启用缓存,缓存文件目录,仅验证更改的文件