Implement Thin (lightweight) Client lib in PHP programming language for Ignite Binary Client Protocol.
Support all operations of the Ignite Binary Client Protocol 2.6:
Except the following features which are not applicable to PHP client:
- Filter object for OP_QUERY_SCAN operation (OP_QUERY_SCAN operation itself will be supported).
- OP_REGISTER_BINARY_TYPE_NAME and OP_GET_BINARY_TYPE_NAME operations.
- Registration of a new Ignite Enum type (reading and writing items of the existing Ignite Enum types will be supported).
- SSL/TLS connection.
- "Failover re-connection algorithm": https://issues.apache.org/jira/browse/IGNITE-7282
Ignite Binary Client Protocol handshake versions: 1.2.0 only.
Minimal required PHP version: 7.2
PHP code-style standards: https://www.php-fig.org/psr/
Synchronous API will be supported (asynchronous operations are not supported by the standard PHP).
The API will not be thread-safe (threads are not available in the standard PHP; pthreads extension is not available for the latest PHP version; thread-safety is possible to support by an application).
The set of examples will cover:
- cache get/create/destroy operations
- cache put/get operations
- SQL operations (create table/index, insert/select/drop)
- SQL Fields query and Scan query
- Authentication and TLS connection
- working with primitive and complex data types
PHPUnit tests https://phpunit.de for all API methods and all basic features. Including simple tests to start examples.
Tests will be integrated into the TeamCity with the help from the community.
The provided docs will include:
- Auto-generated API spec using Doxygen: http://www.doxygen.org
- Instruction how to generate the API spec.
- Instruction how to release PHP library on Packagist: https://packagist.org/
- Readme for user with info how to install and use the client.
- Simple instruction how to setup/run examples.
- Simple instruction how to setup/run tests.
All docs will be provided separately from the source code and will not be merged to the target repository. Before the release all instructions and readme will be moved to the readme.io with the help from the community.
Location of the client:
Will be released as PHP library on Packagist: https://packagist.org/ by the community.