PHP code example of xp-forge / marshalling

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/ */

    

xp-forge / marshalling example snippets


use util\data\Marshalling;

$m= new Marshalling();
$m->marshal('Test');            // "Test"
$m->marshal([1, 2, 3]);         // [1, 2, 3]
$m->marshal(['admin' => true]); // ["admin" => true]

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')