Skip to content

A serializer to transform an object into an associative array by extracting data from its properties and constants based on the #[Serialize] attribute.

License

Notifications You must be signed in to change notification settings

Phauthentic/attribute-serializer

Repository files navigation

Attribute Based Serializer

PHP >= 8.1 phpstan Level 8 License: MIT

Serializer class for extracting data from objects annotated with the #[Serialize] attribute.

This class provides a method, serialize, to transform an object into an associative array by extracting data from its properties and constants based on the #[Serialize] attribute.

Installation

composer require phauthentic/attribute-serializer

How to use it?

Add the #[Serialize()] attribute to the property or constant. You can rename the property in the resulting array by providing a name to the attribute #[Serialize('other-name')].

class Example {
    #[Serialize('username')]
    private $name = 'serializer';
}

var_dump((new Serializer())->serialize(new Example()));
[
    'username' => 'serializer'
]

Dot notation for deep arrays

Field names can be dynamically renamed, even into deeper array structures, by using the dot notation.

class Example2 {
    #[Serialize('first.second')]
    private $name = 'serializer';
}

var_dump((new Serializer())->serialize(new Example2());
[
    'first' => [
        'second' => 'serializer'
    ]
]

ToArrayTrait

class Example3 {
    use ToArrayTrait;

    #[Serialize('username')]
    private $name = 'serializer';
}

var_dump((new Example3)->toArray());
[
    'username' => 'serializer'
]

License

Copyright Florian Krämer

Licensed under the MIT license.

About

A serializer to transform an object into an associative array by extracting data from its properties and constants based on the #[Serialize] attribute.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages