Skip to content

Commit 32d5b78

Browse files
authored
fix examples (php-kafka#36)
* fix examples * update readme * update doc
1 parent 8b3ed64 commit 32d5b78

File tree

3 files changed

+41
-12
lines changed

3 files changed

+41
-12
lines changed

README.md

+25-9
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
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;
9499
use PhpKafka\PhpAvroSchemaGenerator\Registry\ClassRegistry;
100+
use PhpKafka\PhpAvroSchemaGenerator\Parser\ClassPropertyParser;
95101
use 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
110126
In `v1.3.0` the option `--optimizeSubSchemaNamespaces` was added. It was not working fully

example/generate.php

+14-2
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,22 @@
44

55
require_once '../vendor/autoload.php';
66

7+
use PhpKafka\PhpAvroSchemaGenerator\Converter\PhpClassConverter;
8+
use PhpKafka\PhpAvroSchemaGenerator\Parser\ClassParser;
9+
use PhpKafka\PhpAvroSchemaGenerator\Parser\DocCommentParser;
710
use PhpKafka\PhpAvroSchemaGenerator\Registry\ClassRegistry;
11+
use PhpKafka\PhpAvroSchemaGenerator\Parser\ClassPropertyParser;
812
use PhpKafka\PhpAvroSchemaGenerator\Generator\SchemaGenerator;
13+
use PhpParser\ParserFactory;
914

10-
$registry = (new ClassRegistry())->addClassDirectory('./classes')->load();
11-
$generator = new SchemaGenerator($registry);
15+
$parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7);
16+
$classPropertyParser = new ClassPropertyParser(new DocCommentParser());
17+
$classParser = new ClassParser($parser, $classPropertyParser);
18+
19+
$converter = new PhpClassConverter($classParser);
20+
$registry = (new ClassRegistry($converter))->addClassDirectory('./classes')->load();
21+
22+
$generator = new SchemaGenerator('./schema');
23+
$generator->setClassRegistry($registry);
1224
$schemas = $generator->generate();
1325
$generator->exportSchemas($schemas);

example/merge.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
->addSchemaTemplateDirectory('./schemaTemplates')
1212
->load();
1313

14-
$merger = new SchemaMerger($registry, './schema');
14+
$merger = new SchemaMerger('./schema');
15+
$merger->setSchemaRegistry($registry);
1516

1617
$merger->merge();

0 commit comments

Comments
 (0)