定制 tebru/dynamo 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

tebru/dynamo

最新稳定版本:v0.3.3

Composer 安装命令:

composer require tebru/dynamo

包简介

Generates PHP classes from an interface based on doctrine annotations

README 文档

README

Build Status Coverage Status

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.

Installation

composer require tebru/dynamo

Usage

Create a new generator object using the builder

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

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.

The cache directory defaults to /system/dir/dynamo

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

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

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

$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

<?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));
    }
}

统计信息

  • 总下载量: 26.8k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 3
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2015-08-15

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固