{"id":14983788,"url":"https://github.com/wayofdev/laravel-symfony-serializer","last_synced_at":"2025-07-20T21:37:15.752Z","repository":{"id":174388891,"uuid":"651625706","full_name":"wayofdev/laravel-symfony-serializer","owner":"wayofdev","description":"🔧 Laravel + Symfony Serializer. This package provides a bridge between Laravel and Symfony Serializer.","archived":false,"fork":false,"pushed_at":"2025-06-11T02:47:19.000Z","size":1349,"stargazers_count":21,"open_issues_count":11,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-09T09:51:05.833Z","etag":null,"topics":["api","data-mapper","data-serialization","data-transformation","json","laravel","laravel-api","laravel-serializer","object-mapping","php8","serialize","serializer","symfony-component","symfony-serializer"],"latest_commit_sha":null,"homepage":"https://wayof.dev","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wayofdev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"wayofdev"}},"created_at":"2023-06-09T17:00:27.000Z","updated_at":"2025-05-22T18:09:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"fcff0065-a878-4c6a-b09e-6932c807ac32","html_url":"https://github.com/wayofdev/laravel-symfony-serializer","commit_stats":{"total_commits":209,"total_committers":3,"mean_commits":69.66666666666667,"dds":0.5454545454545454,"last_synced_commit":"54b331b9a1b9abf337b61ddca996d3aeed2ae145"},"previous_names":["wayofdev/laravel-symfony-serializer"],"tags_count":95,"template":false,"template_full_name":"wayofdev/laravel-package-tpl","purl":"pkg:github/wayofdev/laravel-symfony-serializer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wayofdev%2Flaravel-symfony-serializer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wayofdev%2Flaravel-symfony-serializer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wayofdev%2Flaravel-symfony-serializer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wayofdev%2Flaravel-symfony-serializer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wayofdev","download_url":"https://codeload.github.com/wayofdev/laravel-symfony-serializer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wayofdev%2Flaravel-symfony-serializer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266204640,"owners_count":23892366,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","data-mapper","data-serialization","data-transformation","json","laravel","laravel-api","laravel-serializer","object-mapping","php8","serialize","serializer","symfony-component","symfony-serializer"],"created_at":"2024-09-24T14:07:55.256Z","updated_at":"2025-07-20T21:37:15.735Z","avatar_url":"https://github.com/wayofdev.png","language":"PHP","funding_links":["https://github.com/sponsors/wayofdev"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cbr\u003e\n    \u003ca href=\"https://wayof.dev\" target=\"_blank\"\u003e\n        \u003cpicture\u003e\n            \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/wayofdev/.github/master/assets/logo.gh-dark-mode-only.png\"\u003e\n            \u003cimg width=\"400\" src=\"https://raw.githubusercontent.com/wayofdev/.github/master/assets/logo.gh-light-mode-only.png\" alt=\"WayOfDev Logo\"\u003e\n        \u003c/picture\u003e\n    \u003c/a\u003e\n    \u003cbr\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cstrong\u003eBuild\u003c/strong\u003e\u003cbr\u003e\n    \u003ca href=\"https://github.com/wayofdev/laravel-symfony-serializer/actions\" target=\"_blank\"\u003e\u003cimg alt=\"Build Status\" src=\"https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fwayofdev%2Flaravel-symfony-serializer%2Fbadge\u0026style=flat-square\u0026label=github%20actions\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cstrong\u003eProject\u003c/strong\u003e\u003cbr\u003e\n    \u003ca href=\"https://packagist.org/packages/wayofdev/laravel-symfony-serializer\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/packagist/dt/wayofdev/laravel-symfony-serializer?\u0026style=flat-square\" alt=\"Total Downloads\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://packagist.org/packages/wayofdev/laravel-symfony-serializer\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/packagist/v/wayofdev/laravel-symfony-serializer?\u0026style=flat-square\" alt=\"Latest Stable Version\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://packagist.org/packages/wayofdev/laravel-symfony-serializer\" target=\"_blank\"\u003e\u003cimg alt=\"Commits since latest release\" src=\"https://img.shields.io/github/commits-since/wayofdev/laravel-symfony-serializer/latest?style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://packagist.org/packages/wayofdev/laravel-symfony-serializer\" target=\"_blank\"\u003e\u003cimg alt=\"PHP Version Require\" src=\"https://poser.pugx.org/wayofdev/laravel-symfony-serializer/require/php?style=flat-square\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cstrong\u003eQuality\u003c/strong\u003e\u003cbr\u003e\n    \u003ca href=\"https://app.codecov.io/gh/wayofdev/laravel-symfony-serializer\" target=\"_blank\"\u003e\u003cimg alt=\"Codecov\" src=\"https://img.shields.io/codecov/c/github/wayofdev/laravel-symfony-serializer?style=flat-square\u0026logo=codecov\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://dashboard.stryker-mutator.io/reports/github.com/wayofdev/laravel-symfony-serializer/master\" target=\"_blank\"\u003e\u003cimg alt=\"Mutation testing badge\" src=\"https://img.shields.io/endpoint?style=flat-square\u0026label=mutation%20score\u0026url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2Fwayofdev%2Flaravel-symfony-serializer%2Fmaster\"\u003e\u003c/a\u003e\n    \u003ca href=\"\"\u003e\u003cimg src=\"https://img.shields.io/badge/phpstan%20level-8%20of%209-brightgreen?style=flat-square\" alt=\"PHP Stan Level 6 of 9\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cstrong\u003eCommunity\u003c/strong\u003e\u003cbr\u003e\n    \u003ca href=\"https://discord.gg/CE3TcCC5vr\" target=\"_blank\"\u003e\u003cimg alt=\"Discord\" src=\"https://img.shields.io/discord/1228506758562058391?style=flat-square\u0026logo=discord\u0026labelColor=7289d9\u0026logoColor=white\u0026color=39456d\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://x.com/intent/follow?screen_name=wayofdev\" target=\"_blank\"\u003e\u003cimg alt=\"Follow on Twitter (X)\" src=\"https://img.shields.io/badge/-Follow-black?style=flat-square\u0026logo=X\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n# Laravel Symfony Serializer\n\nThis package integrates the Symfony Serializer component into Laravel, providing a powerful tool for serializing and deserializing objects into various formats such as JSON, XML, CSV, and YAML.\n\nDetailed documentation on the Symfony Serializer can be found on their [official page](https://symfony.com/doc/current/components/serializer.html).\n\n\u003cbr\u003e\n\n## 🗂️ Table of Contents\n\n- [Purpose](#-purpose)\n- [Installation](#-installation)\n- [Configuration](#-configuration)\n  - [Configuration Options](#-configuration-options)\n  - [Custom Strategies](#-custom-strategies)\n- [Usage](#-usage)\n  - [Components](#-components)\n  - [Example DTO](#-example-dto)\n  - [Using `SerializerManager` in your Service Classes](#-using-serializermanager-in-service-classes)\n  - [Using `ResponseFactory` in Laravel Controllers](#-using-responsefactory-in-laravel-controllers)\n  - [Using in Laravel Queues](#-using-in-laravel-queues)\n- [Security Policy](#-security-policy)\n- [Want to Contribute?](#-want-to-contribute)\n- [Contributors](#-contributors)\n- [Social Links](#-social-links)\n- [License](#-license)\n- [Credits and Useful Resources](#-credits-and-useful-resources)\n\n\u003cbr\u003e\n\n## 🤔 Purpose\n\nThis package brings the power of the Symfony Serializer component to Laravel. While Laravel does not have a built-in serializer and typically relies on array or JSON transformations, this package provides more advanced serialization capabilities. These include object normalization, handling of circular references, property grouping, and format-specific encoders.\n\nIf you are building a REST API, working with queues, or have complex serialization needs, this package will be especially useful. It allows you to use objects as payloads instead of simple arrays and supports various formats such as JSON, XML, CSV, and YAML. This documentation will guide you through the installation process and provide examples of how to use the package to serialize and deserialize your objects.\n\n\u003cbr\u003e\n\n🙏 If you find this repository useful, please consider giving it a ⭐️. Thank you!\n\n\u003cbr\u003e\n\n## 💿 Installation\n\nRequire the package as a dependency:\n\n```bash\ncomposer require wayofdev/laravel-symfony-serializer\n```\n\nYou can publish the config file with:\n\n```bash\n$ php artisan vendor:publish \\\n  --provider=\"WayOfDev\\Serializer\\Bridge\\Laravel\\Providers\\SerializerServiceProvider\" \\\n  --tag=\"config\"\n```\n\n\u003cbr\u003e\n\n## 🔧 Configuration\n\nThe package configuration file allows you to customize various aspects of the serialization process.\n\nBelow is the default configuration provided by the package:\n\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nuse Symfony\\Component\\Serializer\\Mapping\\Loader\\LoaderInterface;\nuse WayOfDev\\Serializer\\Contracts\\EncoderRegistrationStrategy;\nuse WayOfDev\\Serializer\\Contracts\\NormalizerRegistrationStrategy;\nuse WayOfDev\\Serializer\\DefaultEncoderRegistrationStrategy;\nuse WayOfDev\\Serializer\\DefaultNormalizerRegistrationStrategy;\n\n/**\n * @return array{\n *     default: string,\n *     debug: bool,\n *     normalizerRegistrationStrategy: class-string\u003cNormalizerRegistrationStrategy\u003e,\n *     encoderRegistrationStrategy: class-string\u003cEncoderRegistrationStrategy\u003e,\n *     metadataLoader: class-string\u003cLoaderInterface\u003e|null,\n * }\n */\nreturn [\n    'default' =\u003e env('SERIALIZER_DEFAULT_FORMAT', 'symfony-json'),\n\n    'debug' =\u003e env('SERIALIZER_DEBUG_MODE', env('APP_DEBUG', false)),\n\n    'normalizerRegistrationStrategy' =\u003e DefaultNormalizerRegistrationStrategy::class,\n\n    'encoderRegistrationStrategy' =\u003e DefaultEncoderRegistrationStrategy::class,\n\n    'metadataLoader' =\u003e null,\n];\n```\n\n### → Configuration Options\n\n- **`default`**: Specifies the default serializer format. This can be overridden by setting the `SERIALIZER_DEFAULT_FORMAT` environment variable. The default is `symfony-json`.\n- **`debug`**: Enables debug mode for `ProblemNormalizer`. This can be set using the `SERIALIZER_DEBUG_MODE` environment variable. It defaults to the `APP_DEBUG` value.\n- **`normalizerRegistrationStrategy`**: Specifies the strategy class for registering normalizers. The default strategy is [`WayOfDev\\Serializer\\DefaultNormalizerRegistrationStrategy`](https://github.com/wayofdev/laravel-symfony-serializer/blob/master/src/DefaultNormalizerRegistrationStrategy.php).\n- **`encoderRegistrationStrategy`**: Specifies the strategy class for registering encoders. The default strategy is [`WayOfDev\\Serializer\\DefaultEncoderRegistrationStrategy`](https://github.com/wayofdev/laravel-symfony-serializer/blob/master/src/DefaultEncoderRegistrationStrategy.php).\n- **`metadataLoader`**: Allows registration of a custom metadata loader. By default, `Symfony\\Component\\Serializer\\Mapping\\Loader\\AttributeLoader` is used.\n\n### → Custom Strategies\n\n[Due to Laravel's caching limitations, where configs cannot instantiate objects](https://elliotderhay.com/blog/caching-laravel-configs-that-use-objects), this package uses strategies to register normalizers and encoders.\n\nYou can create custom normalizer or encoder registration strategies by implementing the respective interfaces.\n\n#### Normalizer Registration Strategy\n\nTo create a custom normalizer registration strategy:\n\n1. Implement the [`NormalizerRegistrationStrategy`](https://github.com/wayofdev/laravel-symfony-serializer/blob/master/src/Contracts/NormalizerRegistrationStrategy.php) interface:\n\n   ```php\n   \u003c?php\n   \n   declare(strict_types=1);\n   \n   namespace Infrastructure\\Serializer;\n   \n   use Symfony\\Component\\Serializer\\Mapping\\Loader\\LoaderInterface;\n   use Symfony\\Component\\Serializer\\Normalizer;\n   use Symfony\\Component\\Serializer\\Normalizer\\DenormalizerInterface;\n   use Symfony\\Component\\Serializer\\Normalizer\\NormalizerInterface;\n   use WayOfDev\\Serializer\\Contracts\\NormalizerRegistrationStrategy;\n   // ...\n   \n   final readonly class CustomNormalizerRegistrationStrategy implements NormalizerRegistrationStrategy\n   {\n       public function __construct(\n           private LoaderInterface $loader,\n           private bool $debugMode = false,\n       ) {\n       }\n   \n       /**\n        * @return iterable\u003carray{normalizer: NormalizerInterface|DenormalizerInterface, priority: int\u003c0, max\u003e}\u003e\n        */\n       public function normalizers(): iterable\n       {\n           // ...\n       }\n   }\n   ```\n\n2. Change `serializer.php` config to use your custom strategy:\n\n   ```php\n   'normalizerRegistrationStrategy' =\u003e CustomNormalizerRegistrationStrategy::class,\n   ```\n\n#### Encoder Registration Strategy\n\nTo create a custom encoder registration strategy:\n\n1. Implement the [`EncoderRegistrationStrategy`](https://github.com/wayofdev/laravel-symfony-serializer/blob/master/src/Contracts/EncoderRegistrationStrategy.php) interface:\n\n   ```php\n   \u003c?php\n   \n   declare(strict_types=1);\n   \n   namespace Infrastructure\\Serializer;\n   \n   use Symfony\\Component\\Serializer\\Encoder;\n   use Symfony\\Component\\Serializer\\Encoder\\DecoderInterface;\n   use Symfony\\Component\\Serializer\\Encoder\\EncoderInterface;\n   use Symfony\\Component\\Yaml\\Dumper;\n   \n   use function class_exists;\n   \n   final class CustomEncoderRegistrationStrategy implements Contracts\\EncoderRegistrationStrategy\n   {\n       /**\n        * @return iterable\u003carray{encoder: EncoderInterface|DecoderInterface}\u003e\n        */\n       public function encoders(): iterable\n       {\n           // Register your encoders here...\n         \n           yield ['encoder' =\u003e new Encoder\\JsonEncoder()];\n           yield ['encoder' =\u003e new Encoder\\CsvEncoder()];\n           yield ['encoder' =\u003e new Encoder\\XmlEncoder()];\n   \n           if (class_exists(Dumper::class)) {\n               yield ['encoder' =\u003e new Encoder\\YamlEncoder()];\n           }\n       }\n   }\n   ```\n\n2. Change `serializer.php` config to use your custom strategy:\n\n   ```php\n   'encoderRegistrationStrategy' =\u003e CustomEncoderRegistrationStrategy::class,\n   ```\n\n\u003cbr\u003e\n\n## 💻 Usage\n\nThe package provides a list of serializers that can be used to serialize and deserialize objects.\n\nThe default serializers available in this package are: `symfony-json`, `symfony-csv`, `symfony-xml`, `symfony-yaml`.\n\n\u003e [!WARNING]\n\u003e The `yaml` encoder requires the `symfony/yaml` package and is disabled when the package is not installed.\n\u003e Install the `symfony/yaml` package, and the encoder will be automatically enabled.\n\n### → Components\n\n#### SerializerManager\n\nThe `SerializerManager` handles the different serializers available in this package. It can be used to serialize and deserialize objects.\n\n#### ResponseFactory\n\nThe `ResponseFactory` is used to create responses in Laravel controllers, making it easy to include serialized data in HTTP responses.\n\n#### Facades\n\nThis package includes two Laravel Facades:\n\n- `Manager` — To access the underlying `SerializerManager`\n- `Serializer` — To access the bound and configured original Symfony Serializer instance.\n\n### → Example DTO\n\nWe will use this example DTO for serialization purposes:\n\n```php\n\u003c?php\n\nnamespace Application\\User;\n\nuse Symfony\\Component\\Serializer\\Annotation\\Groups;\nuse Symfony\\Component\\Serializer\\Annotation\\SerializedName;\n\nclass UserDTO\n{\n    #[Groups(['public'])]\n    #[SerializedName('id')]\n    private int $id;\n\n    #[Groups(['public'])]\n    #[SerializedName('name')]\n    private string $name;\n\n    #[Groups(['private', 'public'])]\n    #[SerializedName('emailAddress')]\n    private string $email;\n\n    public function __construct(int $id, string $name, string $email)\n    {\n        $this-\u003eid = $id;\n        $this-\u003ename = $name;\n        $this-\u003eemail = $email;\n    }\n\n    public function id(): int\n    {\n        return $this-\u003eid;\n    }\n\n    public function name(): string\n    {\n        return $this-\u003ename;\n    }\n\n    public function email(): string\n    {\n        return $this-\u003eemail;\n    }\n}\n```\n\n### → Using `SerializerManager` in Service Classes\n\n```php\n\u003c?php\n\nnamespace Application\\Services;\n\nuse WayOfDev\\Serializer\\Manager\\SerializerManager;\nuse Application\\User\\UserDTO;\n\nclass ProductService\n{\n    public function __construct(\n        private readonly SerializerManager $serializer,\n    ) {\n    }\n\n    public function someMethod(): void\n    {\n        $serializer = $this-\u003eserializer-\u003eserializer('symfony-json');\n        $dto = new UserDTO(1, 'John Doe', 'john@example.com');\n\n        $serialized = $serializer-\u003eserialize(\n            payload: $dto,\n            context: ['groups' =\u003e ['private']]\n        );\n    }\n}\n```\n\n### → Using `ResponseFactory` in Laravel Controllers\n\nHere's an example of how you can use the `ResponseFactory` in a Laravel Controller:\n\n**Example Controller:**\n\n```php\n\u003c?php\n\nnamespace Bridge\\Laravel\\Public\\Product\\Controllers;\n\nuse Application\\User\\UserDTO;\nuse Illuminate\\Http\\Request;\nuse WayOfDev\\Serializer\\Bridge\\Laravel\\Http\\HttpCode;\nuse WayOfDev\\Serializer\\Bridge\\Laravel\\Http\\ResponseFactory;\n\nclass UserController extends Controller\n{\n    public function __construct(private ResponseFactory $response)\n    {\n    }\n\n    public function index()\n    {\n        $dto = new UserDTO(1, 'John Doe', 'john@example.com');\n\n        $this-\u003eresponse-\u003ewithContext(['groups' =\u003e ['private']]);\n        $this-\u003eresponse-\u003ewithStatusCode(HttpCode::HTTP_OK);\n      \n        return $this-\u003eresponse-\u003ecreate($dto);\n    }\n}\n```\n\n\u003cbr\u003e\n\n### → Using in Laravel Queues\n\nTo switch from Laravel's default serialization to this implementation in queues, you can override the `__serialize` and `__unserialize` methods in your queue jobs. Here’s an example:\n\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nnamespace Bridge\\Laravel\\Public\\Product\\Jobs;\n\nuse Domain\\Product\\Models\\Product;\nuse Domain\\Product\\ProductProcessor;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Queue\\SerializesModels;\nuse WayOfDev\\Serializer\\Bridge\\Laravel\\Facades\\Manager;\n\n/**\n * This Job class shows how Symfony Serializer can be used with Laravel Queues.\n */\nclass ProcessProductJob implements ShouldQueue\n{\n    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;\n\n    public Product $product;\n\n    public function __construct(Product $product)\n    {\n        $this-\u003eproduct = $product;\n    }\n\n    public function handle(ProductProcessor $processor): void\n    {\n        $processor-\u003eprocess($this-\u003eproduct);\n    }\n\n    public function __serialize(): array\n    {\n        return [\n            'product' =\u003e Manager::serialize($this-\u003eproduct),\n        ];\n    }\n\n    public function __unserialize(array $values): void\n    {\n        $this-\u003eproduct = Manager::deserialize($values['product'], Product::class);\n    }\n}\n```\n\n\u003cbr\u003e\n\n## 🔒 Security Policy\n\nThis project has a [security policy](.github/SECURITY.md).\n\n\u003cbr\u003e\n\n## 🙌 Want to Contribute?\n\nThank you for considering contributing to the wayofdev community! We welcome all kinds of contributions. If you want to:\n\n- 🤔 [Suggest a feature](https://github.com/wayofdev/laravel-symfony-serializer/issues/new?assignees=\u0026labels=type%3A+enhancement\u0026projects=\u0026template=2-feature-request.yml\u0026title=%5BFeature%5D%3A+)\n- 🐛 [Report an issue](https://github.com/wayofdev/laravel-symfony-serializer/issues/new?assignees=\u0026labels=type%3A+documentation%2Ctype%3A+maintenance\u0026projects=\u0026template=1-bug-report.yml\u0026title=%5BBug%5D%3A+)\n- 📖 [Improve documentation](https://github.com/wayofdev/laravel-symfony-serializer/issues/new?assignees=\u0026labels=type%3A+documentation%2Ctype%3A+maintenance\u0026projects=\u0026template=4-docs-bug-report.yml\u0026title=%5BDocs%5D%3A+)\n- 👨‍💻 [Contribute to the code](.github/CONTRIBUTING.md)\n\nYou are more than welcome. Before contributing, please check our [contribution guidelines](.github/CONTRIBUTING.md).\n\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg?style=for-the-badge)](https://conventionalcommits.org)\n\n\u003cbr\u003e\n\n## 🫡 Contributors\n\n\u003cp align=\"left\"\u003e\n\u003ca href=\"https://github.com/wayofdev/laravel-symfony-serializer/graphs/contributors\"\u003e\n\u003cimg align=\"left\" src=\"https://img.shields.io/github/contributors-anon/wayofdev/laravel-symfony-serializer?style=for-the-badge\" alt=\"Contributors Badge\"/\u003e\n\u003c/a\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\u003c/p\u003e\n\n## 🌐 Social Links\n\n- **Twitter:** Follow our organization [@wayofdev](https://twitter.com/intent/follow?screen_name=wayofdev) and the author [@wlotyp](https://twitter.com/intent/follow?screen_name=wlotyp).\n- **Discord:** Join our community on [Discord](https://discord.gg/CE3TcCC5vr).\n\n\u003cbr\u003e\n\n## 📜 License\n\n[![License](https://img.shields.io/github/license/wayofdev/laravel-symfony-serializer?style=for-the-badge\u0026color=blue)](./LICENSE.md)\n\n\u003cbr\u003e\n\n## 🧱 Credits and Useful Resources\n\nThis repository is inspired by the following projects:\n\n- [spiral/serializer](https://github.com/spiral/serializer)\n- [spiral-packages/symfony-serializer](https://github.com/spiral-packages/symfony-serializer)\n- [jeromegamez/ramsey-uuid-normalizer](https://github.com/jeromegamez/ramsey-uuid-normalizer)\n- [wayofdev/laravel-jms-serializer](https://github.com/wayofdev/laravel-jms-serializer)\n- [symfony/serializer](https://github.com/symfony/serializer)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwayofdev%2Flaravel-symfony-serializer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwayofdev%2Flaravel-symfony-serializer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwayofdev%2Flaravel-symfony-serializer/lists"}