byjg / serializer
A powerful multi-format serialization library that converts objects, arrays, and data between JSON, XML, YAML, CSV, PHP serialize, and plain text formats with intelligent property mapping and transformation
Fund package maintenance!
byjg
Installs: 143 773
Dependents: 5
Suggesters: 0
Security: 0
Stars: 5
Watchers: 1
Forks: 1
Open Issues: 0
pkg:composer/byjg/serializer
Requires
- php: >=8.1 <8.4
- ext-json: *
- ext-simplexml: *
- symfony/yaml: > 4
Requires (Dev)
- phpunit/phpunit: ^9.6
- vimeo/psalm: ^5.9
Suggests
- ext-curl: *
README
A powerful multi-format serialization library that converts objects, arrays, and data between JSON, XML, YAML, CSV, PHP serialize, and plain text formats with intelligent property mapping and transformation.
Features
- Format Conversion: Transform objects to JSON, XML, YAML, or Arrays, and back again
- Property Control: Filter, transform, and manipulate object properties during conversion
- Object Mapping: Copy properties between different object structures with intelligent mapping
- Property Pattern Matching: Customize how properties are matched and transformed
- Attribute Support: Process PHP attributes during serialization and deserialization
- Type Safety: Maintain data types during transformations
Quick Examples
Convert an object to JSON
$object = new MyClass(); $json = \ByJG\Serializer\Serialize::from($object) ->toJson();
Copy properties between objects
$source = ["id" => 1, "name" => "John"]; $target = new User(); \ByJG\Serializer\ObjectCopy::copy($source, $target);
Create a copyable object
class User implements \ByJG\Serializer\ObjectCopyInterface { use \ByJG\Serializer\ObjectCopyTrait; public $id; public $name; // Automatically inherits copyFrom() and copyTo() methods }
Documentation
Core Components
| Component | Description | Link |
|---|---|---|
| Serialize | Core component for converting objects between formats | Documentation |
| ObjectCopy | Final utility class for copying properties between objects | Documentation |
| ObjectCopyTrait | Trait implementing copyable object functionality | Documentation |
| ObjectCopyInterface | Interface for implementing copyable objects | Documentation |
| BaseModel | Abstract base class with object copying functionality | Documentation |
| DirectTransform | Basic property handler for direct transformations in ObjectCopy | Documentation |
Guides
- Formatters - JSON, XML, YAML, CSV, and Plain Text output formatting
- Property Handlers - Transform property names and values during copying
- Advanced Usage - Performance optimization, security, and complex patterns
- Integration Examples - Framework integration (Symfony, Laravel, Doctrine, etc.)
- ByJG Ecosystem - How Serializer integrates with other ByJG components
- Troubleshooting - Common issues and solutions
Installation
composer require "byjg/serializer"
Testing
./vendor/bin/phpunit
Dependencies
flowchart TD
byjg/serializer --> ext-json
byjg/serializer --> symfony/yaml
byjg/serializer --> ext-simplexml
Loading