Jisly
, (*1)
The smallest PHP lightweight NoSQL database library, flat file JSON., (*2)
The main goal of Jisly is to allow you to quickly start your project with the possibility of memory and flat-file
storage using a NoSQL (document oriented) query syntax., (*3)
Version française ici, (*4)
Concurrent access is managed !, (*5)
How to install and load
This lib can be found on Packagist, (*6)
composer require r0mdau/jisly:^2.0
Loading the library
Jisly relies on the PSR-4 specification for autoloading classes from file paths., (*7)
use Jisly\JislyCollection;
public function saveCart(): void {
$jisly = new JislyCollection("/tmp/data", "cart");
...
}
Definitions
- Each document has a unique identifier called
_rid
.
- Each collection is physically represented by a file.
- The files are stored in a single working directory. The Jisly class is instantiated with the path to this directory
as a parameter.
- Each time you CRUD something, all datas are stored in memory.
- And datas are saved on filesystem.
Examples of use
Initialization of the class
$directory
contains the path to the directory where the files (=collections) of the data model will be stored., (*8)
$database = new Jisly($directory);
To access a collection
$name
contains the name of the collection we want to request. Example : user
., (*9)
Returns an object JislyCollection :, (*10)
$database->collection($name);
Warning : each first time you access a collection, all datas are stored in memory., (*11)
To call a collection
PREAMBLE :
The Insert, Update, Delete methods return a boolean, true
if the action went well, false
otherwise., (*12)
Insert method
Insert the array into the specified collection in JSON format and assigns a unique _rid
identifier to the document if
it has not been specified :, (*13)
$successBool = $database->collection($file)->insert(
[
"name" => "Lucas",
"firstname" => "Georges"
]
);
Delete method
You must first find all documents to delete to provide the _rid
attribute to the delete method., (*14)
Remove the only document in the collection which has the value $rid
to the attribute _rid
:, (*15)
$successBool = $database->collection($file)->delete($rid);
Select method
Returns all documents in the collection in an array() of objects :, (*16)
$results = $database->collection($file)->find();
Return all documents in the collection that have a name
attribute with Lucas
as value in an array() of objects :, (*17)
$results = $database->collection($file)->find(
[
"name" => "Lucas"
]
);
Return the first document that as a name
attribute with 19
as an object value :, (*18)
$result = $database->collection($file)->findOne(
[
"name" => 19
]
);
Logical operators OR and AND
These two logical operators can be used on find
and findOne
methods., (*19)
If no logical operator is provided, OR is used., (*20)
Return all documents in the collection that have a name
attribute with Lucas
OR a firstname
attribute with
Georges
as values in an array() of objects :, (*21)
$result = $database->collection($file)->find(
[
"firstname" => "Georges",
"name" => "Lucas"
], JislyCollection::LOGICAL_OR
);
Return the first document in the collection that have a name
attribute with Lucas
AND a firstname
attribute with
Georges
as an object value :, (*22)
$result = $database->collection($file)->findOne(
[
"firstname" => "Georges",
"name" => "Lucas"
], JislyCollection::LOGICAL_AND
);
Update method
For the modification, the documents concerned are entirely replaced by the second array() given in parameter., (*23)
You must first find all the documents to replace to provide the _rid
attribute to the update method., (*24)
Modify the only document in the collection whose value $rid to the _rid
attribute :, (*25)
$successBool = $database->collection($file)->update(
$rid,
[
"firstname" => "Georges",
"name" => "Lucas"
]
);