77
88## Installation
99```
10- composer require php-kafka/php-avro-schema-generator "^2 .0"
10+ composer require php-kafka/php-avro-schema-generator "^3 .0"
1111```
1212
1313## Description
@@ -36,7 +36,8 @@ $registry = (new SchemaRegistry())
3636 ->addSchemaTemplateDirectory('./schemaTemplates')
3737 ->load();
3838
39- $merger = new SchemaMerger($registry, './schema');
39+ $merger = new SchemaMerger('./schema');
40+ $merger->setSchemaRegistry($registry);
4041
4142$merger->merge();
4243
@@ -68,7 +69,8 @@ $registry = (new SchemaRegistry())
6869 ->addSchemaTemplateDirectory('./schemaTemplates')
6970 ->load();
7071
71- $merger = new SchemaMerger($registry, './schema');
72+ $merger = new SchemaMerger('./schema');
73+ $merger->setSchemaRegistry($registry);
7274$merger->addOptimizer(new FieldOrderOptimizer());
7375$merger->addOptimizer(new FullNameOptimizer());
7476$merger->addOptimizer(new PrimitiveSchemaOptimizer());
@@ -91,20 +93,34 @@ Output directory: output directory for your generated schema templates
9193``` php
9294<?php
9395
96+ use PhpKafka\PhpAvroSchemaGenerator\Converter\PhpClassConverter;
97+ use PhpKafka\PhpAvroSchemaGenerator\Parser\ClassParser;
98+ use PhpKafka\PhpAvroSchemaGenerator\Parser\DocCommentParser;
9499use PhpKafka\PhpAvroSchemaGenerator\Registry\ClassRegistry;
100+ use PhpKafka\PhpAvroSchemaGenerator\Parser\ClassPropertyParser;
95101use PhpKafka\PhpAvroSchemaGenerator\Generator\SchemaGenerator;
102+ use PhpParser\ParserFactory;
96103
97- $registry = (new ClassRegistry ())
98- ->addClassDirectory('./example/classes')
99- ->load( );
104+ $parser = (new ParserFactory ())->create(ParserFactory::PREFER_PHP7);
105+ $classPropertyParser = new ClassPropertyParser(new DocCommentParser());
106+ $classParser = new ClassParser($parser, $classPropertyParser );
100107
101- $generator = new SchemaGenerator($registry, './example/schemaTemplates');
108+ $converter = new PhpClassConverter($classParser);
109+ $registry = (new ClassRegistry($converter))->addClassDirectory('./classes')->load();
102110
111+ $generator = new SchemaGenerator('./schema');
112+ $generator->setClassRegistry($registry);
103113$schemas = $generator->generate();
104-
105114$generator->exportSchemas($schemas);
106-
107115```
116+ The generator is able to detect types from:
117+ - doc comments
118+ - property types
119+ - doc annotations
120+ - @avro-type to set a fixed type instead of calculating one
121+ - @avro-default set a default for this property in your schema
122+ - @avro-doc to set schema doc comment
123+ - @avro-logical-type set logical type for your property (decimal is not yet supported, since it has additional parameters)
108124
109125## Disclaimer
110126In ` v1.3.0 ` the option ` --optimizeSubSchemaNamespaces ` was added. It was not working fully
0 commit comments