wol-soft / php-json-schema-model-generator-symfony-converter
Provides a symfony converter for models generated with the wol-soft/php-json-schema-model-generator library
Requires
- php: >=7.2
- ext-json: *
- sensio/framework-extra-bundle: ^4.4 | ^5.1
- symfony/http-kernel: ^4.4 | ^5.1
- symfony/yaml: ^4.4 | ^5.1
- wol-soft/php-json-schema-model-generator-production: *
Requires (Dev)
- phpunit/phpunit: ^8.5 | ^9.4
- symfony/browser-kit: ^4.4 | ^5.1
- symfony/error-handler: ^4.4 | ^5.1
- wol-soft/php-json-schema-model-generator: > 0.13.0
This package is auto-updated.
Last update: 2024-11-18 19:37:58 UTC
README
php-json-schema-model-generator-symfony-converter
Provides a symfony converter for models generated with the wol-soft/php-json-schema-model-generator library.
Requirements
- Requires at least PHP 7.2
- Requires the PHP extensions ext-json
- Requires Symfony
Installation
The recommended way to install php-json-schema-model-generator-symfony-converter is through Composer:
$ composer require wol-soft/php-json-schema-model-generator-symfony-converter
Usage
To integrate models generated with the wol-soft/php-json-schema-model-generator library into your symfony project make sure you've added the PHPModelGeneratorBundle
and the SensioFrameworkExtraBundle
to your bundle configuration (eg. config/bundles.php
):
<?php return [ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], PHPModelGenerator\Bundle\PHPModelGeneratorBundle::class => ['all' => true], ];
Additionally make sure converters are enabled eg. by creating a config/packages/sensio_framework_extra.yaml
configuration file:
sensio_framework_extra: request: converters: true auto_convert: true
Now all you have to do is using the generated models in your controller action. The models will be instantiated automatically by utilizing the body of the request as data input. If an invalid request body is sent and the validation fails an Exception will be thrown. Register an exception listener and convert the exception into a feasible response. For a running example you can have a look into the demo application located in the tests of this library. It includes a JSON Schema (tests\App\Schema\person.json
), the generation step (tests\bootstrap.php
), an exception handler (tests\App\Event\ExceptionListener.php
) and a controller utilizing the generated model (tests\App\Controller\PersonController
).
Tests
The library is tested via PHPUnit.
After installing the dependencies of the library via composer update
you can execute the tests with ./vendor/bin/phpunit
(Linux) or vendor\bin\phpunit.bat
(Windows). The test names are optimized for the usage of the --testdox
output.