|  Download Papyrus: Storing data in the file system with PHPGeneralitiesThe 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. InstallationTo 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: http://github.com/barbosa89/papyrus
 ConfigurationPapyrus need to run an array of configurations and a path to the folder containing the files storage. Configuration arrayCreate 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#)
 Absolute storage folder pathStorage 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);
 Creating of storage filesAs 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. Permissions (Only in Linux)Files in the storage folder (path/to/storageFolder/):  chmod 706 fileName.extension
 Example: 
chmod 706 registers.data
 Quick Start and ExamplesFor 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;
 Insert$values = ['dni' => 123456, 'name' => 'Tony', 'lastName' => 'Stark'];
 $papyrus = new Papyrus();
$papyrus->insertInto('users')->values($values)->runQuery();
 SelectThe where method can only receive a value of array type, which should be the primary key or identifier. Select all content in a file with all fields.$papyrus->select()->from('users')->runQuery();
 Select all content in a file with some fields.$papyrus->select('dni, name')->from('users')->runQuery();
 Select a record with all fields.$papyrus->select()->from('users')->where(['dni' => 123456])->runQuery();
 Select a record with some fields$papyrus->select('dni, name')->from('users')->where(['dni' => 123456])->runQuery();
 Select records without 'Where' clausule, sorted by a field with value ASC or DESC.$papyrus->select()->from('users')->orderBy(['name' => 'ASC'])->runQuery();
 $papyrus->select('dni, lastName')->from('users')->orderBy(['lastName' => 'ASC'])->runQuery();
 Select records without 'Where' clausule but with limitation.$papyrus->select()->from('users')->limit(3)->runQuery();
 $papyrus->select()->from('users')->limit(3)->orderBy(['name' => 'DESC'])->runQuery();
 DeleteDelete all records$papyrus->deleteFrom('users')->runQuery();
 Delete a record$papyrus->deleteFrom('users')->where(['dni' => 123456])->runQuery();
 UpdateThe primary key of a record can not be modified. Update all records$data = ['name' => 'Tony', 'lastname' => 'Stark'];
 $papyrus->update('users')->set($data)->runQuery();
 Update a record$data = ['name' => 'Tony', 'lastName' => 'The Iron Man'];
 $papyrus->update('users')->set($data)->where(['dni' => 123456])->runQuery();
 Get the data of query$papyrus->getRecords();
 Get the status of query$papyrus->getStatus();
 Available methodsPapyrus::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 = '');
 Contribute
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... |