Transit is a data format and a set of libraries for conveying values between applications written in different languages. This library provides support for marshalling Transit data to/from PHP. Unlike the Java and Clojure implementations it relies on the non-streaming JSON parsing mechanism of the host PHP environment.
This implementation's major.minor version number corresponds to the version of the Transit specification it supports.
NOTE: Transit is a work in progress and may evolve based on feedback. As a result, while Transit is a great option for transferring data between applications, it should not yet be used for storing data durably over time. This recommendation will change when the specification is complete.
composer require honzabrecka/transit-php
usetransit\JSONReader;
usetransit\JSONWriter;
usetransit\Transit;
usetransit\Map;
$transit = newTransit(newJSONReader(), newJSONWriter());
$transit->read('["^ ","foo","bar"]');
$transit->write(newMap(['foo', 'bar']));You can use assoc array instead of transit\Map. It comes with a price (string keys only), therefore it's disabled by default.
usetransit\JSONReader;
usetransit\JSONWriter;
usetransit\Transit;
$transit = newTransit(newJSONReader(true), newJSONWriter(true));
$transit->read('["^ ","foo","bar"]');
$transit->write(['foo' => 'bar']);| Transit type | Write accepts | Read returns |
|---|---|---|
| null | null | null |
| string | string | string |
| boolean | bool | bool |
| integer | int | int |
| decimal | float | float |
| bytes | transit\Bytes | transit\Bytes |
| keyword | transit\Keyword | transit\Keyword |
| symbol | transit\Symbol | transit\Symbol |
| time | DateTime | DateTime |
| array | array | array |
| map | transit\Map or assoc array | transit\Map or assoc array |
| cmap | transit\CMap | transit\CMap |
| set | transit\Set | transit\Set |
| list | SplDoublyLinkedList | SplDoublyLinkedList |
| uri | transit\URI | transit\URI |
| uuid | transit\UUID | transit\UUID |
| char | transit\Char | transit\Char |