Binary Types
This is a legacy Apache Ignite documentationThe new documentation is hosted here: https://ignite.apache.org/docs/latest/
The PHP thin client supports all operations and types from the Binary Client Protocol except the following not-applicable features:
OP_REGISTER_BINARY_TYPE_NAME
andOP_GET_BINARY_TYPE_NAME
operations are not supported.- Filter object for
OP_QUERY_SCAN
operation is not supported.OP_QUERY_SCAN
operation itself is supported. - It is not possible to register a new Ignite Enum type. Reading and writing items of the existing Ignite Enum types are supported.
- Raw data is not supported in the complex objects.
The following example shows how to put/get Complex Objects and Binary Objects:
use Apache\Ignite\Client;
use Apache\Ignite\ClientConfiguration;
use Apache\Ignite\Type\ObjectType;
use Apache\Ignite\Type\ComplexObjectType;
use Apache\Ignite\Exception\ClientException;
class Person
{
public $id;
public $name;
public $salary;
public function __construct(int $id = 0, string $name = null, float $salary = 0)
{
$this->id = $id;
$this->name = $name;
$this->salary = $salary;
}
}
function putGetComplexAndBinaryObjects(): void
{
$client = new Client();
try {
$client->connect(new ClientConfiguration('127.0.0.1:10800'));
$cache = $client->getOrCreateCache('myPersonCache')->
setKeyType(ObjectType::INTEGER);
// Complex Object type for PHP Person class instances
$personComplexObjectType = (new ComplexObjectType())->
setFieldType('id', ObjectType::INTEGER);
// set cache key and value types
$cache->setKeyType(ObjectType::INTEGER)->
setValueType($personComplexObjectType);
// put Complex Objects to the cache
$cache->put(1, new Person(1, 'John Doe', 1000));
$cache->put(2, new Person(2, 'Jane Roe', 2000));
// get Complex Object, returned value is an instance of Person class
$person = $cache->get(1);
print_r($person);
// new CacheClient instance of the same cache to operate with BinaryObjects
$binaryCache = $client->getCache('myPersonCache')->
setKeyType(ObjectType::INTEGER);
// get Complex Object from the cache in a binary form, returned value is an instance of BinaryObject class
$binaryPerson = $binaryCache->get(2);
echo('Binary form of Person:' . PHP_EOL);
foreach ($binaryPerson->getFieldNames() as $fieldName) {
$fieldValue = $binaryPerson->getField($fieldName);
echo($fieldName . ' : ' . $fieldValue . PHP_EOL);
}
// modify Binary Object and put it to the cache
$binaryPerson->setField('id', 3, ObjectType::INTEGER)->
setField('name', 'Mary Major');
$binaryCache->put(3, $binaryPerson);
// get Binary Object from the cache and convert it to PHP object
$binaryPerson = $binaryCache->get(3);
print_r($binaryPerson->toObject($personComplexObjectType));
$client->destroyCache('myPersonCache');
} catch (ClientException $e) {
echo($e->getMessage());
} finally {
$client->disconnect();
}
}
putGetComplexAndBinaryObjects();
PHP example filesPHP thin client contains fully workable examples to demonstrate the behavior of the client.
Updated 5 months ago