teamneusta / jms-serializer-extension-bundle
Extends the JMS Serializer Bundle to allow loading serializer configuration while ignoring the namespace prefixes
Installs: 754
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 4
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- jms/serializer-bundle: ^4.2 || ^5.4
Requires (Dev)
- ergebnis/composer-normalize: ^2.42
- friendsofphp/php-cs-fixer: ^3.11
- jangregor/phpstan-prophecy: ^1.0
- matthiasnoback/symfony-dependency-injection-test: ^5.1
- nyholm/symfony-bundle-test: ^3.0
- phpspec/prophecy-phpunit: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.9
- phpstan/phpstan-symfony: ^1.2
- phpunit/phpunit: ^9.5
- qossmic/deptrac-shim: ^0.24 || ^1.0
- symfony/filesystem: ^5.4 || ^6.2 || ^7.0
- symfony/phpunit-bridge: ^5.4 || ^6.2 || ^7.0
- symfony/test-pack: ^1.0
- symfony/yaml: ^5.4 || ^6.2 || ^7.0
README
The JMS Serializer Bundle enables the configuration of various directories to supply serializer configuration files. These directories are configured with a PHP class namespace. If you aim to offer configuration files for your bundle's classes and the application intends to override some of them, namespace conflicts may arise. This bundle facilitates the configuration of directories to supply wildcard configurations without a namespace prefix.
Installation
-
Require the bundle
composer require teamneusta/jms-serializer-extension-bundle
-
Enable the bundle
Add the Bundle to your
config/bundles.php
:\Neusta\JmsSerializerExtensionBundle\NeustaJmsSerializerExtensionBundle::class => ['all' => true],
Configuration
The following configuration snippet illustrates the usage of this bundle. The configuration keys my_bundle and app have their namespace prefixes configured to be ignored. The configured directories can contain any serializer configuration one desires; PHP class namespaces are disregarded. The configuration key another_bundle provides default configuration from the JMS Serializer Bundle for the CompanyThingCoolBundle Bundle.
jms_serializer: metadata: directories: my_bundle: path: '@MyBundle/../config/serializer' namespace_prefix: 'my_bundle' app: path: '%kernel.project_dir%/config/serializer' namespace_prefix: 'app' another_bundle: namespace_prefix: "Company\\Thing\\CoolBundle" path: "@CompanyThingCoolBundle/../config/serializer" neusta_jms_serializer_extension: non_prefixed_namespaces: my_bundle: ~ app: ~
Overriding load priority
It is possible to provide a priority
per namespace. If no priority is given, 0
is assumed. When multiple configuration files for a class are found, the one with the highest priority is used.
For example, consider the following configuration. If a configuration file for a given class is found in both my_bundle
and another_bundle
, the configuration from my_bundle
is used because it has a higher priority.
jms_serializer: metadata: directories: my_bundle: path: '@MyBundle/../config/serializer' namespace_prefix: 'my_bundle' another_bundle: namespace_prefix: "Company\\Thing\\CoolBundle" path: "@CompanyThingCoolBundle/../config/serializer" neusta_jms_serializer_extension: non_prefixed_namespaces: my_bundle: priority: 10 another_bundle: ~
Contribution
Feel free to open issues for any bug, feature request, or other ideas.
Please remember to create an issue before creating large pull requests.
Local Development
To develop on local machine, the vendor dependencies are required.
bin/composer install
We use composer scripts for our main quality tools. They can be executed via the bin/composer
file as well.
bin/composer cs:fix bin/composer phpstan
For the tests there is a different script, that includes a database setup.
bin/run-tests