DIService Annotation
Helper for registering Nette DI services via Doctrine Annotations, factory generator and inject generator.
Install
composer require --dev wavevision/di-service-annotation
Note: Install phpstan-nette if you need support for strict return types.
Usage
Annotate your service
use Wavevision\DIServiceAnnotation\DIService;
/**
* @DIService(params={"%wwwDir%"}, generateInject=true, generateFactory=true)
*/
class ExampleService
{
}
Create runner script
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:
Annotation options
-
enableInject: bool
– will addinject: on
to generated service config (defaulttrue
) -
generateComponent: bool
– will generate<className>Component
trait, with factory andcreateComponent<ClassName>
implemented -
generateFactory: bool
– will generate<ClassName>Factory
interface withcreate
function -
generateInject: bool
– will generateInject<ClassName>
trait with property$<className>
andinject<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.
Configuration option
Required
-
sourceDirectory: string
– location of services -
outputFile: string
– output file for registered services
Optional
-
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 - defaultfalse
-
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
-