2017 © Pedro Peláez
 

library dynamo

Generates PHP classes from an interface based on doctrine annotations

image

tebru/dynamo

Generates PHP classes from an interface based on doctrine annotations

  • Saturday, March 25, 2017
  • by natebrunette
  • Repository
  • 1 Watchers
  • 0 Stars
  • 16,244 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 3 Forks
  • 0 Open issues
  • 12 Versions
  • 8 % Grown

The README.md

Build Status Coverage Status, (*1)

Dynamo

This library allows you to take an interface annotated with Doctrine annotations and generate a class. It handles all of the parsing, and provides events to hook into in order to create the method body based on the annotations., (*2)

Installation

``` bash composer require tebru/dynamo, (*3)


## Usage Create a new generator object using the builder ```php $generator = \Tebru\Dynamo\Generator::builder() ->namespacePrefix('My\Custom\Library') ->setCacheDir('path/to/cache/vendor-name') ->build();

There are many different options to use with the builder, however, for most all cases, the defaults outside of the namespace prefix and cache dir will be fine., (*4)

The namespace prefix is required in order to get around class name conflicts. The generator uses the full interface name plus the prefix as the generated class name. The prefix defaults to Dynamo., (*5)

The cache directory defaults to /system/dir/dynamo, (*6)

After you have a generator, you can pass your interface name into it and it will create a file in your cache directory, (*7)

$generator->createAndWrite(MyInterface::class);

Events

It's essential to subscribe to at least the MethodEvent as it is what allows you to add a method body to the method. The MethodModel and AnnotationCollection are available on the event., (*8)

The two other events are StartEvent and EndEvent, both of which provide access to the ClassModel., (*9)

$eventDispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher();
$eventDispatcher->addListener(new MethodListener());

$generator = \Tebru\Dynamo\Generator::builder()
    ->namespacePrefix('My\Custom\Library')
    ->setCacheDir('path/to/cache/vendor-name')
    ->setEventDispatcher($eventDispatcher)
    ->build();

Sample listener

Here is a skeleton of a method listener, (*10)

<?php

namespace Foo;

use Tebru\Dynamo\Event\MethodEvent;

class MethodListener
{
    public function __invoke(MethodEvent $event)
    {
        $methodModel = $event->getMethodModel();
        $annotationCollection = $event->getAnnotationCollection();

        $body = [];
        if ($annotation->collection->exists(MyAnnotation::class)) {
            $body[] = '$var = "annotation exists";';
        } else {
            $body[] = '$var = "annotation not exists";';
        }

        $methodModel->setBody(implode($body));
    }
}

The Versions

25/03 2017
22/03 2016

dev-master

9999999-dev

Generates PHP classes from an interface based on doctrine annotations

  Sources   Download

MIT

The Requires

 

The Development Requires

by Nate Brunette

22/03 2016
22/03 2016
22/03 2016
21/03 2016

v0.2.2

0.2.2.0

Generates PHP classes from an interface based on doctrine annotations

  Sources   Download

MIT

The Requires

 

The Development Requires

by Nate Brunette

16/12 2015

v0.2.1

0.2.1.0

Generates PHP classes from an interface based on doctrine annotations

  Sources   Download

MIT

The Requires

 

The Development Requires

by Nate Brunette

04/11 2015

v0.2.0

0.2.0.0

Generates PHP classes from an interface based on doctrine annotations

  Sources   Download

MIT

The Requires

 

The Development Requires

by Nate Brunette

27/08 2015

v0.1.3

0.1.3.0

Generates PHP classes from an interface based on doctrine annotations

  Sources   Download

MIT

The Requires

 

The Development Requires

by Nate Brunette

27/08 2015

v0.1.2

0.1.2.0

Generates PHP classes from an interface based on doctrine annotations

  Sources   Download

MIT

The Requires

 

The Development Requires

by Nate Brunette

18/08 2015

v0.1.1

0.1.1.0

Generates PHP classes from an interface based on doctrine annotations

  Sources   Download

MIT

The Requires

 

The Development Requires

by Nate Brunette

17/08 2015

v0.1.0

0.1.0.0

Generates PHP classes from an interface based on doctrine annotations

  Sources   Download

MIT

The Requires

 

The Development Requires

by Nate Brunette