The Papyrus package can store information in files, perform queries, updates, and deletes data . All this, based on a primary key or identifier. The information is stored in JSON format.
To install via composer (http://getcomposer.org/), place the following in your composer.json file:
{
"require": {
"barbosa/papyrus": "dev-master"
}
}
or download package from github.com:
https://github.com/barbosa89/papyrus
Papyrus need to run an array of configurations and a path to the folder containing the files storage.
Create an array of configurations in a file or in the file which instances to Papyrus. The array must have two key, extension and files:
<?php
/**
* Example in a configurations file.
*/
return [
'extension' => '.project',
'files' => [
'users' => ['dni(int#)', 'name', 'lastName']
]
];
Other way, in the file which instances to Papyrus:
<?php
require 'vendor/autoload.php';
use \Barbosa\Papyrus\Papyrus;
$config = [
'extension' => '.project',
'files' => [
'users' => ['dni(int#)', 'name', 'lastName']
]
];
$papyrus = new Papyrus($config);
This extension is for all files:
'extension' => '.project'
The file structure represents fields in a SQL table , what is in brackets, are the fields of each file:
'files' => [
'fileName' => ['primaryKey(int#)', 'field', 'otherField'],
'otherFileName' => ['primaryKey(str#)', 'field', 'otherField']
]
The options for primary key:
Auto increment integer (int++)
Unique integer (int#)
Unique string (str#)
Storage files that are configured in the array must be created in a folder chosen by the user, the folder path should be passed to Papyrus:
<?php
require 'vendor/autoload.php';
use \Barbosa\Papyrus\Papyrus;
/**
* Complete example.
*/
$config = [
'extension' => '.project',
'files' => [
'users' => ['dni(int#)', 'name', 'lastName']
]
];
$path = realpath(__DIR__ . '/storageFolder/');
$papyrus = new Papyrus($config, $path);
You can also switch configurations through methods:
<?php
require 'vendor/autoload.php';
use \Barbosa\Papyrus\Papyrus;
/**
* Complete example with setters.
*/
$papyrus = new Papyrus();
$papyrus->setStoragePath(realpath(__DIR__ . '/storageFolder/'));
$config = [
'extension' => '.project',
'files' => [
'users' => ['dni(int#)', 'name', 'lastName']
]
];
$papyrus->loadConfigurations($config);
As example, a file will be created with registers name and the extension .data:
$ touch path/to/storageFolder/registers.data
In the console:
$ ls -l
-rwx---rw- 1 user user 494 jul 8 21:10 registers.data
You can add every files that you need.
Files in the storage folder (path/to/storageFolder/):
chmod 706 fileName.extension
Example:
chmod 706 registers.data
For purposes of explaining with examples , it is assumed that there is a file called users with the following structure:
'files' => [
'users' => ['dni(int#)', 'name', 'lastName']
]
Field dni(int#), indicates that is the primary key and a unique integer.
Require the autoload file:
require 'vendor/autoload.php';
use \Barbosa\Papyrus\Papyrus;
$values = ['dni' => 123456, 'name' => 'Tony', 'lastName' => 'Stark'];
$papyrus = new Papyrus();
$papyrus->insertInto('users')->values($values)->runQuery();
The where method can only receive a value of array type, which should be the primary key or identifier.
$papyrus->select()->from('users')->runQuery();
$papyrus->select('dni, name')->from('users')->runQuery();
$papyrus->select()->from('users')->where(['dni' => 123456])->runQuery();
$papyrus->select('dni, name')->from('users')->where(['dni' => 123456])->runQuery();
$papyrus->select()->from('users')->orderBy(['name' => 'ASC'])->runQuery();
$papyrus->select('dni, lastName')->from('users')->orderBy(['lastName' => 'ASC'])->runQuery();
$papyrus->select()->from('users')->limit(3)->runQuery();
$papyrus->select()->from('users')->limit(3)->orderBy(['name' => 'DESC'])->runQuery();
$papyrus->deleteFrom('users')->runQuery();
$papyrus->deleteFrom('users')->where(['dni' => 123456])->runQuery();
The primary key of a record can not be modified.
$data = ['name' => 'Tony', 'lastname' => 'Stark'];
$papyrus->update('users')->set($data)->runQuery();
$data = ['name' => 'Tony', 'lastName' => 'The Iron Man'];
$papyrus->update('users')->set($data)->where(['dni' => 123456])->runQuery();
$papyrus->getRecords();
$papyrus->getStatus();
Papyrus::select($fields);
Papyrus::deleteFrom($file = '');
Papyrus::update($file = '');
Papyrus::from($file = '');
Papyrus::insertInto($file = '');
Papyrus::set(array $data = null);
Papyrus::values(array $data = null);
Papyrus::where(array $conditions = null);
Papyrus::orderBy(array $order = null);
Papyrus::limit($limit = 0);
Papyrus::runQuery();
Papyrus::getRecords();
Papyrus::getStatus();
$papyrus->loadConfigurations(array $config = null);
$papyrus->setStoragePath($path = '');
- Check for open issues or open a new issue to start a discussion around a bug or feature.
- Fork the repository on GitHub to start making your changes.
- Write one or more tests for the new feature or that expose the bug.
- Make code changes to implement the feature or fix the bug.
- Send a pull request to get your changes merged and published.
Thanks...