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

2.0.0 2020-11-17 11:04 UTC

This package is auto-updated.

Last update: 2024-04-18 18:11:19 UTC


README

Latest Version Minimum PHP Version Maintainability Test Coverage Build Status Coverage Status MIT License

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.