arzzen / php-flatbuffers
This package is abandoned and no longer maintained.
No replacement package was suggested.
PHP Memory Efficient Serialization Library - FlatBuffers
1.0.2
2017-01-07 11:07 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- mockery/mockery: ^0.9.5
- phpunit/phpunit: 4.0.*
This package is not auto-updated.
Last update: 2020-08-13 14:27:36 UTC
README
PHP Memory Efficient Serialization Library
FlatBuffers is a serialization library for games and other memory constrained apps.
FlatBuffers allows you to directly access serialized data without unpacking/parsing it first, while still having great forwards/backwards compatibility.
FlatBuffers can be built for many different systems (Android, Windows, OS X, Linux)
For testing only
Composer
{
"repositories": [
{
"url": "https://github.com/arzzen/php-flatbuffers.git",
"type": "git"
}
],
"require": {
"arzzen/php-flatbuffers": "dev-master"
}
}
Test:
use FlatBuffers\Table; use FlatBuffers\FlatBufferBuilder; use FlatBuffers\ByteBuffer; use FlatBuffers\Constants; class StringWrapper extends Table implements Constants { private $fbb; public function __construct(FlatBufferBuilder $flatBufferBuilder) { $this->fbb = $flatBufferBuilder; } public function init(ByteBuffer $byteBuffer) { $this->bb = $byteBuffer; $this->bb_pos = $this->bb->getInt($this->bb->getPosition()) + $this->bb->getPosition(); return $this; } public function getString($slot = 0) { $vtable_offset = self::SIZEOF_INT + ($slot * 2); $vtable = $this->bb_pos - $this->bb->getInt($this->bb_pos); $offset = $vtable_offset < $this->bb->getShort($vtable) ? $this->bb->getShort($vtable + $vtable_offset) : 0; $offset += $this->bb_pos + $this->bb->getInt($offset + $this->bb_pos); $len = $this->bb->getInt($offset); $startPos = $offset + self::SIZEOF_INT; $_string = substr($this->bb->_buffer, $startPos, $len); return ($offset != 0 ? $_string : null); } public function createString($value) { return $this->fbb->createString($value); } public function addString($slot, $str) { $this->fbb->addOffsetX($slot, $str, 0); } public function dataBuffer() { return $this->fbb->dataBuffer(); } public function startObject($numfields) { $this->fbb->startObject($numfields); } public function endObject() { return $this->fbb->endObject(); } public function finish($root_table, $identifier = NULL) { $this->fbb->finish($root_table, $identifier); } } $flatBufferBuilder = new FlatBufferBuilder(1); $stringWrapper = new StringWrapper($flatBufferBuilder); // set string $firstText = $stringWrapper->createString('first_value'); $secondText = $stringWrapper->createString('second_value'); $stringWrapper->startObject(25); $stringWrapper->addString(2, $firstText); $stringWrapper->addString(3, $secondText); $stringWrapper->finish($stringWrapper->endObject()); // get string $stringWrapper->init($stringWrapper->dataBuffer()); echo $stringWrapper->getString(2); echo $stringWrapper->getString(3);