binn php
v0.9.0
用於序列化到二進製字符串的PHP類。
原始C Binn庫:https://github.com/liteserver/binn
binn規範:https://github.com/liteserver/binn/blob/master/spec.md
composer require knik/binn順序數組:
use Knik Binn Binn ;
$ binn = new Binn ();
// List
$ array = [ 123 , - 456 , 789 ];
$ binnString = $ binn -> serialize ( $ array );
$ unserialized = $ binn -> unserialize ( $ binnString ); // Equal with $array數字鍵數組:
$ binn = new Binn ();
// Map
$ array = [ 1 => " add " , 2 => [- 12345 , 6789 ]];
$ binnString = $ binn -> serialize ( $ array );
$ unserialized = $ binn -> unserialize ( $ binnString ); // Equal with $array字符串鍵數組:
$ binn = new Binn ();
// Object
$ array = [ " hello " => " world " ];
$ binnString = $ binn -> serialize ( $ array );
$ unserialized = $ binn -> unserialize ( $ binnString ); // Equal with $array混合陣列:
$ binn = new Binn ();
$ array = [ [ " id " => 1 , " name " => " John " ], [ " id " => 2 , " name " => " Eric " ] ]
// A list of objects
$ binnString = $ binn -> serialize ( $ array );
$ unserialized = $ binn -> unserialize ( $ binnString ); // Equal with $array斑點:
$ binn = new Binn ();
$ file = fopen ( ' /path/to/file.jpg ' , ' rb ' );
// Filedata in binn structure
$ bin1 = $ binn -> serialize ( $ file );
// Filedata in binn list structure
$ bin2 = $ binn -> serialize ([ ' file ' => $ file ]);您可以將binnencoder與Symfony Serializer一起使用
use Knik Binn Encoder BinnEncoder ;
use Symfony Component Serializer Serializer ;
$ encoders = [ new BinnEncoder ()];
$ serializer = new Serializer ([], $ encoders );
$ serializer -> serialize ( "x40xD0x06" , ' binn ' ); $ binn = new BinnList ();
$ binn -> addUint8 ( 4 );
$ binn -> addInt16 (- 8875 );
$ binn -> addStr ( ' text ' );
$ serialized = $ binn -> serialize (); // xE0x0Fx03x20x04x41xDDx55xA0x04textx00 $ array = [ 2 , true , [ 123 , - 456 , 789 ]];
$ binn = new BinnList ();
// xE0x11x03x20x02x01xE0x0Bx03x20x7Bx41xFEx38x40x03x15
$ serialized = $ binn -> serialize ( $ array );