mnapoli / blackbox
Requires
- php: >=5.4
- symfony/finder: ~2.5
Requires (Dev)
- doctrine/dbal: ~2.4
- jms/serializer: ~0.15
- phpseclib/phpseclib: *
- phpunit/phpunit: ~4.0
- predis/predis: ~1.0
- symfony/filesystem: ~2.5
- symfony/yaml: ~2.6
README
BlackBox
BlackBox is a storage library that abstracts backends and data transformation behind simple interfaces.
Store data. "Where" and "how" can be decided later.
Experimental: this project is still at the state of experimentation. Use with caution.
Usage
The API is defined by interfaces and is extremely simple.
namespace BlackBox; interface Storage extends Traversable { public function get(string $id); public function set(string $id, $data) : void; public function remove(string $id) : void; } $storage->set('foo', 'Hello World!'); echo $storage->get('foo'); // Hello World! foreach ($storage as $key => $item) { echo $key; // foo echo $item; // Hello World! }
You can read all about those interfaces in the Interfaces documentation.
Features
BlackBox can store data in:
- files
- database (MySQL, PostgreSQL, SQLite, Oracle, …) using Doctrine DBAL
- PHP arrays (i.e. in memory)
Data can optionally be:
- stored in JSON
- stored in YAML
- encrypted with AES
Additionally a storage can be cached with another (e.g. cache a DB storage with a Redis or array storage).
Backends
Backends are classes that implement Storage
:
FileStorage
DirectoryStorage
DatabaseTable
ArrayStorage
You can read all about backends in the Backends documentation.
Transformers
Transformers transform data before storage and after retrieval:
JsonEncoder
YamlEncoder
ObjectArrayMapper
AesEncrypter
You can read all about transformers in the Transformers documentation.
// Encode the data in JSON $storage = new JsonEncoder( // Store data in files new DirectoryStorage('some/directory') ); $storage->set('foo', [ 'name' => 'Lebowski', ]); // will encode it in JSON // then will store it into a file $data = $storage->get('foo'); // will read from the file // then will decode the JSON echo $data['name']; // Lebowski
License
BlackBox is released under the MIT license.