flashport / laravel-json-marshaller
A laravel wrapper for the lib flashport/json-marshaller
v0.12.5
2025-03-13 12:16 UTC
Requires
- php: >=8.2
- flashport/json-marshaller: ^0.0.13
- laravel/framework: ^12.0
Requires (Dev)
- orchestra/testbench: ^10.0
README
A laravel wrapper for the json-marshaller lib.
Installation:
composer require flashport/laravel-json-marshaller
Usage:
There are two main ways of using this lib, it is possible to use existing target cast objects without modifying them, modifying only the model which performs the cast.
Option 1: Directly on the model
On the $casts
array, specify the JsonMarshallable::class
and the target class
after :
. This will ensure the target class gets passed as an argument to the Marshaller.
/** * The attributes that should be cast. * * @var array<string, string> */ protected $casts = [ 'metadata' => JsonMarshallable::class . ":" . Metadata::class, 'customFields' => JsonMarshallable::class . ":" . CustomField::class, 'active' => 'bool', ];
Option 2: On the target classes
Target class:
Make sure to extend the AsJsonMarshallable
class on your target classes.
use LaravelJsonMarshaller\Castables\AsJsonMarshallable; class CustomField extends AsJsonMarshallable { //... }
Model:
On the model, specify only the target class name you want to cast into.
/** * The attributes that should be cast. * * @var array<string, string> */ protected $casts = [ 'metadata' => Metadata::class, 'customFields' => CustomField::class, 'active' => 'bool', ];