Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kudrmichal/serializer
PHP XML, Json serialization
https://github.com/kudrmichal/serializer
json mapper object php php8 serialization serializer xml
Last synced: 2 months ago
JSON representation
PHP XML, Json serialization
- Host: GitHub
- URL: https://github.com/kudrmichal/serializer
- Owner: KudrMichal
- Created: 2017-12-02T14:06:19.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-03-07T11:24:56.000Z (almost 2 years ago)
- Last Synced: 2024-12-03T12:55:31.357Z (2 months ago)
- Topics: json, mapper, object, php, php8, serialization, serializer, xml
- Language: PHP
- Homepage:
- Size: 111 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 6
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
Simple XML/JSON object mapper
===========kudrmichal/serializer is a PHP object xml/json mapper for PHP 8.0+
Requirements
------------kudrmichal/serializer requires PHP 8.0 or higher.
Installation
------------To install the latest version of `kudrmichal/serializer` use [Composer](https://getcomposer.org).
```
$ composer require kudrmichal/serializer
```JSON Usage
------------Let's create two test classes
```
use KudrMichal\Serializer\Json\Metadata as JSON;class Test
{
public function __construct(
#[JSON\Property(name:"testInt")]
private int $testInteger,
#[JSON\Property]
private string $testString,
#[JSON\Property]
private bool $testBoolean,
#[JSON\PropertyArray]
private array $testArray,
#[JSON\Property]
private TestObject $testObject,
#[JSON\PropertyArray(type:TestObject::class)]
private array $testObjectsArray,
) {}//getters, setters, etc.
}class TestObject
{
public function __construct(
#[JSON\Property] private int $testObjectInt,
#[JSON\Property] private string $testObjectString,
#[JSON\Property] private bool $testObjectBoolean,
#[JSON\PropertyArray] private array $testObjectArray
) {}
//getters, setters, etc.
}```
JSON string serializing to PHP object
```
$json = <<deserialize(Test::class, $json);
$test instanceof Test // true
```PHP object serializing to JSON string
```
$object = new Test(
10,
'string test',
TRUE,
[1,2,3,4],
[4,3,2,1],
new TestObject(11, 'object string test', FALSE, [5,6,7,8]),
[
new TestObject(12, "array object string test", false, [10,11,12]),
new TestObject(13, "array object string test 2", true, [13,14,15]),
],
);$serializer = new \KudrMichal\Serializer\Json\Serializer();
$json = $serializer->serialize($object);
```XML Usage
------------Let's create another two test classes
```
use KudrMichal\Serializer\Unit\Xml\Classes\TestObject;
use KudrMichal\Serializer\Xml\Metadata as XML;#[XML\Document(name:"test")]
class Test
{
public function __construct(
#[XML\Element(name:"testInteger")]
private int $testInt,
#[XML\Attribute(name:"testAttributeInt")]
private int $testAttributeInteger,
#[XML\Element]
private string $testString,
#[XML\Element]
private bool $testBoolean,
#[XML\Element(dateFormat: "Y-m-d")]
private \DateTimeImmutable $testDate,
#[XML\Elements(name: "testArrayItem", type: "int")]
private array $testArray,
#[XML\ElementArray(type:"int", itemName: "testNestedArrayItem")]
private array $testNestedArray,
#[XML\Element]
private TestObject $testObject,
#[XML\ElementArray(type: TestObject::class, itemName: "testObject")]
private array $testObjectNestedArray
) {}
//getters, setters, etc.
}class TestObject
{
public function __construct(
#[XML\Element(name:"testInteger")]
private int $testObjectInt,
#[XML\Attribute(name:"testAttributeInt", ignoreNull: true)]
private ?int $testObjectAttributeInt = NULL,
#[XML\Element(ignoreNull: true)]
private ?string $testObjectString = NULL
) {}//getters, setters, etc.
}
```PHP object serializing to \DOMDocument
```
$test = new Test(
321,
123,
'321',
true,
new \DateTimeImmutable('2022-02-22'),
[1,2,3],
[3,2,1],
new \KudrMichal\Serializer\Unit\Xml\Classes\TestObject(9, 10, 'test'),
[
new \KudrMichal\Serializer\Unit\Xml\Classes\TestObject(5),
new \KudrMichal\Serializer\Unit\Xml\Classes\TestObject(6, testObjectString: 'true'),
]
);$serializer = new \KudrMichal\Serializer\Xml\Serializer();
$doc = $serializer->serialize($test);
```XML string serializing to PHP object
```
$xml = <<
321
321
1
2022-02-22
1
2
3
3
2
1
9
test
5
6
true
XML;
$doc = new \DOMDocument();
$doc->loadXML($xml);$deserializer = new \KudrMichal\Serializer\Xml\Deserializer();
$test = $deserializer->deserialize($doc, \KudrMichal\Serializer\Tests\Unit\Xml\Classes\Test::class);
```