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 addinject: onto generated service config (defaulttrue)generateComponent: boolβ will generate<className>Componenttrait, with factory andcreateComponent<ClassName>implementedgenerateFactory: boolβ will generate<ClassName>Factoryinterface withcreatefunctiongenerateInject: boolβ will generateInject<ClassName>trait with property$<className>andinject<ClassName>function implementedparams: string[]β list of DI parameters to be passed to service constructortags: string[]β list of tags to be used with the service in generated config
For configuration options see Configuration properties.
sourceDirectory: stringβ location of servicesoutputFile: stringβ output file for registered services
setMask: stringβ mask for file locator - default*.phpsetFileMapping: arrayβ map for splitting configs by namespace
$configuration->setFileMapping([
'RootNamespace\Namespace1' => 'config1.neon',
'RootNamespace\Namespace2' => 'config2.neon',
]);setInjectGenerator: Injectβ set custom generator for injectssetFactoryGenerator: Factoryβ set custom generator for factoriessetComponentFactory: Componentβ set custom generator for componentssetRegenerate: boolβ regenerate all generated code each run - defaultfalseenableFileValidationβ check each file for fatal errors before reading annotation, skip file on errorautoloadFile: stringβ file for class autoloading, e.g.vendor/autoload.phptempDir: stringβ enable cache, directory for cache file, only changed files are validated
