Register DI services using annotation for Nette Framework.

3.0.4 2020-01-15 16:54 UTC

This package is auto-updated.

Last update: 2020-01-25 15:54:19 UTC


Wavevision s.r.o.

DIService Annotation

Build Status Coverage Status PHPStan

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.


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 add inject: on to generated service config (default true)
  • generateComponent: bool – will generate <className>Component trait, with factory and createComponent<ClassName> implemented
  • generateFactory: bool – will generate <ClassName>Factory interface with create function
  • 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.