Skip to content

Register DI services using annotation for Nette Framework 🔌

License

Notifications You must be signed in to change notification settings

reastyn/di-service-annotation

 
 

Repository files navigation

Wavevision DI service annotation

Build Status Coverage Status PHPStan

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 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.

About

Register DI services using annotation for Nette Framework 🔌

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%