Helper for registering Nette DI services via Doctrine Annotations, factory generator and inject generator.
composer require --dev wavevision/di-service-annotation
Note: Install phpstan-nette if you need support for strict return types.
use Wavevision\DIServiceAnnotation\DIService;
/**
 * @DIService(params={"%wwwDir%"}, generateInject=true, generateFactory=true)
 */
class ExampleService
{
}For example bin/extract-services.php
use Wavevision\DIServiceAnnotation\Configuration;
use Wavevision\DIServiceAnnotation\Runner;
Runner::run(new Configuration('sourceDirectory', 'services.neon'));Running this script with php bin/extract-services.php
will generate from class following:
- enableInject: boolโ will add- inject: onto generated service config (default- true)
- generateComponent: boolโ will generate- <className>Componenttrait, with factory and- createComponent<ClassName>implemented
- generateFactory: boolโ will generate- <ClassName>Factoryinterface with- createfunction
- generateInject: boolโ will generate- Inject<ClassName>trait with property- $<className>and- inject<ClassName>function implemented
- params: string[]โ list of DI parameters to be passed to service constructor
- tags: string[]โ list of tags to be used with the service in generated config
For configuration options see Configuration properties.
- sourceDirectory: stringโ location of services
- outputFile: stringโ output file for registered services
- setMask: stringโ mask for file locator - default- *.php
- setFileMapping: arrayโ map for splitting configs by namespace
$configuration->setFileMapping([
    'RootNamespace\Namespace1' => 'config1.neon',
    'RootNamespace\Namespace2' => 'config2.neon',
]);- setInjectGenerator: Injectโ set custom generator for injects
- setFactoryGenerator: Factoryโ set custom generator for factories
- setComponentFactory: Componentโ set custom generator for components
- setRegenerate: boolโ regenerate all generated code each run - default- false
- enableFileValidationโ check each file for fatal errors before reading annotation, skip file on error- autoloadFile: stringโ file for class autoloading, e.g.- vendor/autoload.php
- tempDir: stringโ enable cache, directory for cache file, only changed files are validated
 
