1. Go to this page and download the library: Download xp-forge/marshalling library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use util\data\Marshalling;
class Person {
private $name, $age;
public function __construct(string $name, int $age) {
$this->name= $name;
$this->age= $age;
}
public function name(): string { return $this->name; }
public function age(): int { return $this->age; }
}
$m= new Marshalling();
$m->marshal(new Person('...', 42)); // ["name" => "...", "age" => 42]
use util\data\Marshalling;
$m= new Marshalling();
$person= $m->unmarshal(['name' => '...', 'age' => 42], Person::class);
use util\data\Marshalling;
use util\{Date, Bytes, Money, UUID};
$m= new Marshalling();
$m->marshal(Date::now()); // "2018-08-29T10:40:49+0200" (ISO 8601)
$m->marshal(new Bytes("\x50\x4b\x03\x04")); // "UEsDBA==" (base64)
$m->marshal(new Money(12.99, $currency)); // ["amount" => 12.99, "currency" => "EUR"]
$m->marshal(UUID::randomUUID()); // ["value" => "a2b15f7b-f6e0-45fa-9d7f-703fda05d4ac"]
use util\data\Marshalling;
class User {
public function __construct(public int $id, public string $name) { }
}
$marshalling= (new Marshalling())
->mapping(User::class, fn($user) => $user->id)
->resolving(User::class, fn($value) => new User($value, posix_getpwuid($value)['name'])
;
$value= $marshalling->marshal(new User(0, 'root'));
// 0
$user= $marshalling->unmarshal($value, User::class);
// User(id: 0, name: 'root')
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.