7
7
8
8
## Installation
9
9
```
10
- composer require php-kafka/php-avro-schema-generator "^2 .0"
10
+ composer require php-kafka/php-avro-schema-generator "^3 .0"
11
11
```
12
12
13
13
## Description
@@ -36,7 +36,8 @@ $registry = (new SchemaRegistry())
36
36
->addSchemaTemplateDirectory('./schemaTemplates')
37
37
->load();
38
38
39
- $merger = new SchemaMerger($registry, './schema');
39
+ $merger = new SchemaMerger('./schema');
40
+ $merger->setSchemaRegistry($registry);
40
41
41
42
$merger->merge();
42
43
@@ -68,7 +69,8 @@ $registry = (new SchemaRegistry())
68
69
->addSchemaTemplateDirectory('./schemaTemplates')
69
70
->load();
70
71
71
- $merger = new SchemaMerger($registry, './schema');
72
+ $merger = new SchemaMerger('./schema');
73
+ $merger->setSchemaRegistry($registry);
72
74
$merger->addOptimizer(new FieldOrderOptimizer());
73
75
$merger->addOptimizer(new FullNameOptimizer());
74
76
$merger->addOptimizer(new PrimitiveSchemaOptimizer());
@@ -91,20 +93,34 @@ Output directory: output directory for your generated schema templates
91
93
``` php
92
94
<?php
93
95
96
+ use PhpKafka\PhpAvroSchemaGenerator\Converter\PhpClassConverter;
97
+ use PhpKafka\PhpAvroSchemaGenerator\Parser\ClassParser;
98
+ use PhpKafka\PhpAvroSchemaGenerator\Parser\DocCommentParser;
94
99
use PhpKafka\PhpAvroSchemaGenerator\Registry\ClassRegistry;
100
+ use PhpKafka\PhpAvroSchemaGenerator\Parser\ClassPropertyParser;
95
101
use PhpKafka\PhpAvroSchemaGenerator\Generator\SchemaGenerator;
102
+ use PhpParser\ParserFactory;
96
103
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 );
100
107
101
- $generator = new SchemaGenerator($registry, './example/schemaTemplates');
108
+ $converter = new PhpClassConverter($classParser);
109
+ $registry = (new ClassRegistry($converter))->addClassDirectory('./classes')->load();
102
110
111
+ $generator = new SchemaGenerator('./schema');
112
+ $generator->setClassRegistry($registry);
103
113
$schemas = $generator->generate();
104
-
105
114
$generator->exportSchemas($schemas);
106
-
107
115
```
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)
108
124
109
125
## Disclaimer
110
126
In ` v1.3.0 ` the option ` --optimizeSubSchemaNamespaces ` was added. It was not working fully
0 commit comments