ArangoDB-PHP-Core
A lightweight, and at the same time flexible "very"-low-level ArangoDB client for PHP., (*1)
, (*2)
Master:
Devel:
, (*3)
, (*4)
Purpose:
The core client should serve as a flexible low level base for higher level client implementations (AR,ODM,OGM) to be built on top of it., (*5)
At this experimental stage, it does provide some abstraction of ArangoDB's API. It's still not quite clear if the api abstraction will in the end result in a different package or stay in the Core.
The client should generally be seen as a basis that takes away the boilerplate code of setting up requests and managing responses (headers, statuses, etc...) with ArangoDB., (*6)
Highlights:
- Request / Response Objects
- A wrapper around injectable connectors. Two packages are already available: https://github.com/frankmayer/ArangoDB-PHP-Core-Curl and https://github.com/frankmayer/ArangoDB-PHP-Core-Guzzle
- Flexibility through dependency injection:
- Inject your own connector, Request or Response Objects
- directly
- via configuration resolution
- via the client class's own simple IOC container
- Register your plugins (for example a trace plugin)
- Extend the core's functionality through traits (This is still in the makings)
- supports ArangoDB's Async and Batch functionality
- provides a toolbox for handling everything around communication with an ArangoDB server, such as url-, parameter- and header-building tools.
- Includes a few test classes that provide basic testing functionality against the server and also a bit of insight on how to build a client on top of the core.
PHP Versions:
Tested and Supported with PHP 7.0+ & HHVM 3.15.0+ (but will most probably work from HHVM 3.11.0 onwards), (*7)
Caution:
This project is at the moment in a highly experimental phase.
The API is not yet stable and there most probably will be significant changes to it., (*8)
So, it's not recommended to build anything critical on top of it yet. ;)
But... stay tuned..., (*9)
Contributing
As the project is still in a highly experimental state, it's not yet open to pull requests.
But I'd love to see contributions after the initial experimental phase is over. :)
I'll let you know via this readme and my Twitter-feed: https://twitter.com/frankmayer_
Thanks !!, (*10)
Major Todo's:
- [ ] stabilize contracts for interoperability
- [ ] stabilize plugin API
- [x] implement ArangoDB authentication
- [ ] implement basic tracer plugin
- [x] provide docs
License:
Apache V2 => see LICENSE.md file, (*11)