1. Go to this page and download the library: Download eftec/documentstoreone library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
eftec / documentstoreone example snippets
use eftec\DocumentStoreOne\DocumentStoreOne;
try {
$flatcon = new DocumentStoreOne("base", 'tmp');
// or you could use:
// $flatcon = new DocumentStoreOne(__DIR__ . "/base", 'tmp');
} catch (Exception $e) {
die("Unable to create document store. Please, check the folder");
}
$flatcon->insertOrUpdate("somekey1",json_encode(array("a1"=>'hello',"a2"=>'world'))); // or you could use serialize/igbinary_serialize
$doc=$flatcon->get("somekey1");
$listKeys=$flatcon->select();
$flatcon->delete("somekey1");
use eftec\DocumentStoreOne\DocumentStoreOne;
$doc=new DocumentStoreOne("base","task",'folder');
//also: $doc=new DocumentStoreOne(__DIR__."/base","task",'folder');
$doc->serializeStrategy='php'; // it sets the strategy of serialization to php
$doc->autoSerialize(true); // autoserialize
$flatcon->insertOrUpdate("somekey1",array("a1"=>'hello',"a2"=>'world'));
$flatcon = new DocumentStoreOne(__DIR__ . "/base"); // new instance, using the folder /base, without serialization and with the default data
$flatcon = new DocumentStoreOne(__DIR__ . "/base", '','auto','','php_array'); // new instance and serializing using php_array
use eftec\DocumentStoreOne\DocumentStoreOne;
IR__ . "/base", 'tmp');
} catch (Exception $e) {
die("Unable to create document store.".$e->getMessage());
}
use eftec\DocumentStoreOne\DocumentStoreOne;
ase", 'tmp',DocumentStoreOne::DSO_APCU);
} catch (Exception $e) {
die("Unable to create document store.".$e->getMessage());
}
$ok=$flatcon->isCollection('tmp');
$flatcon->collection('newcollection'); // it sets a collection.
$flatcon->collection('newcollection')->select(); // it sets and return a query
// if we are not using auto serialization
$doc=json_encode(["a1"=>'hello',"a2"=>'world']);
$flatcon->insertOrUpdate("1",$doc); // it will create a document called 1.dson in the base folder.
// if we are using auto serialization
$flatcon->insertOrUpdate("1",["a1"=>'hello',"a2"=>'world']);
// if we are not using auto serialization
$doc=json_encode(array("a1"=>'hello',"a2"=>'world'));
$flatcon->insert("1",$doc);
// if we are using auto serialization
$flatcon->insert("1",["a1"=>'hello',"a2"=>'world']);
// if we are not using auto serialization
$doc=json_encode(["a1"=>'hello',"a2"=>'world']);
$flatcon->update("1",$doc);
// if we are using auto serialization
$flatcon->update("1",["a1"=>'hello',"a2"=>'world']);
$doc=$flatcon->get("1"); // the default value is false
$doc=$flatcon->get("1",-1,'empty');
// data in rows [['id'=>1,'cat'=>'vip'],['id'=>2,'cat'=>'vip'],['id'=>3,'cat'=>'normal']];
$data=$this->getFiltered('rows',-1,false,['cat'=>'normal']); // [['id'=>3,'cat'=>'normal']]
$data=$this->getFiltered('rows',-1,false,['type'=>'busy'],false); // [2=>['id'=>3,'cat'=>'normal']]
$seq=$flatcon->appendValue("log",date('c')." new log");
$seq=$flatcon->getNextSequence();
$seq=$flatcon->getNextSequence("seq",-1,1,1,100); // if $seq=1, then it's reserved up to the 101. The next value will be 102.
$this->nodeId=1; // if it is not set then it uses a random value each time.
$unique=$flatcon->getSequencePHP();
$inv=new Invoice();
$invTmp=$doc->get('someid'); //$invTmp is a stdClass();
DocumentStoreOne::fixCast($inv,$invTmp);
$ds=new DocumentStoreOne();
$ds->maxLockTime=300;
$ds=new DocumentStoreOne();
$ds->insert('1','hello'); // it stores the document 1.dson
$ds->keyEncryption='SHA256';
$ds->insert('1','hello'); // it stores the document 6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.dson
// 1) open the store
$ds=new DocumentStoreOne('base','purchases'); // we open the document store and selected the collection purchase.
$ds->autoSerialize(true,'auto');
// 2) reading all products
// if the list of products holds in memory then, we could store the whole list in a single document (listproducts key)
$products=$ds->collection('products')->get('listproducts');
// 3) we read the keys of every purchases. It could be slow and it should be a limited set (<100k rows)
$purchases=$ds->collection('purchases')->select(); // they are keys such as 14,15...
$customerXPurchase=[];
// 4) We read every purchase. It is also slow. Then we merge the result and obtained the final result
foreach($purchases as $k) {
$purchase=$ds->get($k);
@$customerXPurchase[$purchase->customer]+=($purchase->amount * @$products[$purchase->productpurchase]); // we add the amount
}
// 5) Finally, we store the result.
$ds->collection('total')->insertOrUpdate($customerXPurchase,'customerXPurchase'); // we store the result.
// throw an error:
$this->throwable=true; // (default value is true) If false, then the errors are stored in $this->latestError
try {
$this->insert('id1','values');
} catch($ex) {
var_dump($ex);
}
// not throw an error:
$this->throwable=false;
$this->insert('id1','values');
if($this->latestError) {
var_dump($this->latestError);
}
$this->resetError();
// not throw an error:
$this->->noThrowOnError()->insert('id1','values');
// but you can still see the latest error:
if($this->latestError) {
var_dump($this->latestError);
}
$doc=new DocumentStoreOne(__DIR__ . "/base",'','none','','csv'); // set your strategy to csv.
$doc->docExt='.csv'; // (optional), you can set the extension of the document
$doc->csvPrefixColumn='col_'; // (optional), you can set the name of the columns (if the csv doesn't have columns)
$doc->csvStyle(); // (optional) not needing, but you can use to set your own specifications of csv, for example tab-separated, etc.
$doc->regionalStyle(); // (optional) not needing, but you can use to set your own regional settings.
$values=[
['name'=>'john1','age'=>22],
['name'=>'john2','age'=>22],
['name'=>'john3','age'=>22],
];
$doc->delete('csv1');
$doc->insert('csv1',$values);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.