jaumo / phavroc
Generate PHP classes from your Avro schema
Requires
- php: ^8.1
- ext-json: *
- jaumo/avro: ^2.0@RC|^3.0
- league/flysystem: ^1.0
- nikic/php-parser: ^4.14
- symfony/console: ^5
- symfony/finder: ^5
Requires (Dev)
- beberlei/assert: ^3.3.2
- behat/behat: ^3.5
- friendsofphp/php-cs-fixer: ^3
- phpspec/php-diff: ^1.1
- phpstan/phpstan: ^0.12.99
README
Phavroc
Introduction
This library allows to generate modern PHP classes from Avro Schemas.
Installation
This library is registered on packagist.org, allowing you to install it using Composer.
Run the following command to do so:
$ composer require jaumo/phavroc
Usage
Basic
Once installed, you may run the generator against a specific Avro Schema using:
$ ./vendor/bin/phavroc my_schema.avsc
or against a whole directory using:
$ ./vendor/bin/phavroc schemas/
Common Interface
It is possible to specify a common interface for all the generated class:
$ ./vendor/bin/phavroc --common-interface Com\\Acme\\MessageInterface schemas/
This is especially useful to easily typehint all the messages at once.
Deprecations support
It is possible to provide a JSON map-file with info about deprecated schemas/fields:
$ ./vendor/bin/phavroc --deprecation-map deprecations.json schemas/
The structure of this mapping is as follows:
{
"fully.qualified.schema.Name": {
"deprecated": "Optional field. Contains the schema-level deprecation doc",
"deprecated-fields": [
{
"name": "Name of a deprecated field",
"doc": "Deprecation doc"
},
...
],
"deprecated-symbols": [
"ENUM_SYMBOL"
]
}
}
The corresponding deprecation docs will be included in doc-blocks of the generated classes.
Contributing
This library is released under the Apache-2.0 license (see LICENSE for more information).
Any contributions are very welcome, make sure to do the appropriate changes to the Behat scenarios as well.
You may execute the test suite by running:
$ ./vendor/bin/behat