aboutcoders/enum-serializer-bundle
Symfony bundle adding JMS Serializer support for myclabs/php-enum enums. Register enum types via config or tagged services, then serialize/deserialize to JSON using enum class names in @Type annotations or directly in serializer calls.
jms/serializer for structured data handling.myclabs/php-enum (or similar enum-like structures) in APIs, forms, or storage layers.AppKernel or config.yml system, requiring adaptation (e.g., via Symfony’s HttpKernel or custom service registration).jms/serializer updates.register() method) to replace Symfony’s AppKernel.config.yml → Laravel’s config/enum_serializer.php with minimal refactoring.myclabs/php-enum or Laravel’s native enum (PHP 8.1+), though the latter may need a compatibility layer.jms/serializer (v1.x or v2.x), which may need version pinning to avoid conflicts.jms/serializer is deprecated in favor of Symfony’s Serializer component, which could complicate long-term maintenance.HttpKernel) may require wrapper logic or polyfills.jms/serializer’s complexity could impact boot time in large apps.JsonSerializable or custom accessors?jms/serializer’s flexibility (e.g., metadata-driven serialization) worth the integration effort?Arrayable + JsonSerializable).AppKernel.
// app/Providers/EnumSerializerServiceProvider.php
public function register() {
$this->app->singleton('abc.enum_serializer', function ($app) {
return new AbcEnumSerializerBundle()->getSerializer();
});
}
config/enum_serializer.php via a publishes array in the provider.myclabs/php-enum: Use as-is.UserRole).jms/serializer.config.yml with Laravel’s config system.JsonSerializable).jms/serializer to a stable version (e.g., ^1.4 or ^2.0) to avoid conflicts.Illuminate\Queue\Events\JobProcessed) if enums are used in queued jobs.ApiResource for automatic enum serialization in responses.jms/serializer is installed and configured (may require jms/serializer-bundle for Symfony compatibility).myclabs/php-enum vs. PHP 8.1+ enums).config/enum_serializer.php.jms/serializer’s deprecation could force a rewrite.jms/serializer and Laravel’s service container.jms/serializer’s metadata handling could add latency in high-throughput APIs.jms/serializer or Laravel’s components.composer.json.HttpKernel lifecycle (e.g., event dispatching).Events system.jms/serializer’s configuration and Laravel’s service container.jms/serializer’s metadata system or Laravel’s DI.config/enum_serializer.php instead of config.yml").How can I help you explore Laravel packages today?