|  Download Papyrus: Almacenando datos en el sistema de archivos con PHPGeneralidadesEl paquete Papyrus puede almacenar informaci贸n en archivos, realizar consultas, actualizaciones y eliminar datos. Todo esto, basado en una llave primaria o identificador. La informaci贸n es almacenada en formato JSON.  Instalaci贸nPara instalar v铆a Composer, escribe lo siguiente en tu archivo composer.json: {
    "require": {
        "barbosa/papyrus": "dev-master"
    }
}
 O descarga el paquete de Github: http://github.com/barbosa89/papyrus
 Configuraci贸nPapyrus necesita un arreglo de configuraciones y una ruta a la carpeta que contenga los archivos de almacenamiento.  Arreglo de configuracionesCrea un arreglo de configuraciones en un archivo o en el archivo en el cual instancies a Papyrus. El arreglo debe contener dos claves primarias, extensi贸n y archivos. <?php
/
 * Ejemplo en un archivo de configuraciones.
 */
 return [
         'extension'	=>	'.project',
         'files' =>  [
                    'users' => ['dni(int#)', 'name', 'lastName']
                    ]
       ];
 Otra forma, en el archivo en el cual instancias a Papyrus: <?php 
 require 'vendor/autoload.php';
 use \Barbosa\Papyrus\Papyrus;
 $config = [
         'extension' =>  '.project',
         'files' =>  [
                    'users' => ['dni(int#)', 'name', 'lastName']
                    ]
        ];
 $papyrus = new Papyrus($config);
 Esta extensi贸n es para todos los archivos: 'extension' => '.project'
 La estructura de los archivos representa los campos en una tabla SQL, lo que est谩 entre corchetes, son los campos de cada archivo: 'files' => [
     'fileName' => ['primaryKey(int#)', 'field', 'otherField'],
    'otherFileName' => ['primaryKey(str#)', 'field', 'otherField']
	
    ]
 Las opciones para llaves primarias son las siguientes: Auto increment integer (int++)
Unique integer (int#)
Unique string (str#)
 Ruta a la carpeta de almacenamientoLos archivos de almacenamiento que sean configurados en el arreglo, deben ser creados en una carpeta seleccionada por el usuario, la ruta de la carpeta debe ser pasada a Papyrus. <?php 
 require 'vendor/autoload.php';
 use \Barbosa\Papyrus\Papyrus;
 /
 * Ejemplo completo. 
 */
 $config = [
         'extension' =>  '.project',
         'files' =>  [
                    'users' => ['dni(int#)', 'name', 'lastName']
                    ]
        ];
 $path = realpath(__DIR__ . '/storageFolder/');
 $papyrus = new Papyrus($config, $path);
 Puedes emplear cualquier forma de configuraci贸n: <?php 
 require 'vendor/autoload.php';
 use \Barbosa\Papyrus\Papyrus;
 /
 * Ejemplo completo con m茅todos setters. 
 */
 $papyrus = new Papyrus();
 $papyrus->setStoragePath(realpath(__DIR__ . '/storageFolder/'));
 $config = [
         'extension' =>  '.project',
         'files' =>  [
                    'users' => ['dni(int#)', 'name', 'lastName']
                    ]
        ];
 $papyrus->loadConfigurations($config);
 Creaci贸n de archivos de almacenamientoComo ejemplo, ser谩 creado un archivo con el nombre registers y la extensi贸n .data: $ touch ruta/a/carpetaDeAlmacenamiento/registers.data
 Listamos en la consola: $ ls -l
-rwx---rw- 1 user user 494 jul  8 21:10 registers.data
 Puedes agregar los archivos que consideres necesarios. Permisos (S贸lo para Linux)A los archivos que fueron creados, se les debe otorgar permisos (ruta/a/carpetaDeAlmacenamiento/):  chmod 706 fileName.extension
 Ejemplo: 
chmod 706 registers.data
 Pr谩ctica con ejemplosPara prop贸sitos de explicaci贸n con ejemplos, se asume que hay un archivo previamente creado llamado users, con la siguiente estructura: 'files' => [
	'users' => ['dni(int#)', 'name', 'lastName']
	]
 El campo dni(int#), indica que es llave primaria y de tipo entero 煤nico. Incluye el archivo de autocarga  de Composer y usa el espacio de nombres de Papyrus: require 'vendor/autoload.php';
 use \Barbosa\Papyrus\Papyrus;
 Inserciones$values = ['dni' => 123456, 'name' => 'Tony', 'lastName' => 'Stark'];
 $papyrus = new Papyrus();
$papyrus->insertInto('users')->values($values)->runQuery();
 SeleccionesEl m茅todo where puede 煤nicamente recibir un valor de tipo arreglo, el cual deber铆a ser la llave primaria o identificador. Seleccionar todo el contenido de un archivo con todos los campos.$papyrus->select()->from('users')->runQuery();
 Seleccionar todo el contenido de un archivo con algunos campos.$papyrus->select('dni, name')->from('users')->runQuery();
 Seleccionar un registro con todos los campos.$papyrus->select()->from('users')->where(['dni' => 123456])->runQuery();
 Seleccionar un registro con algunos los campos.$papyrus->select('dni, name')->from('users')->where(['dni' => 123456])->runQuery();
 Seleccionar registros sin la clausula where, ordenado por un campo con valor ASC (Ascendente) 贸 DESC (Descendente).$papyrus->select()->from('users')->orderBy(['name' => 'ASC'])->runQuery();
 $papyrus->select('dni, lastName')->from('users')->orderBy(['lastName' => 'ASC'])->runQuery();
 Seleccionar registros sin la clausula where pero aplicando un l铆mite.$papyrus->select()->from('users')->limit(3)->runQuery();
 $papyrus->select()->from('users')->limit(3)->orderBy(['name' => 'DESC'])->runQuery();
 BorrarBorrar todos los registros$papyrus->deleteFrom('users')->runQuery();
 Borrar un registro$papyrus->deleteFrom('users')->where(['dni' => 123456])->runQuery();
 ActualizarLa llave primaria de un registro no puede ser modificada.  Actualizar todos los registros.$data = ['name' => 'Tony', 'lastname' => 'Stark'];
 $papyrus->update('users')->set($data)->runQuery();
 Actualizar un registro.$data = ['name' => 'Tony', 'lastName' => 'The Iron Man'];
 $papyrus->update('users')->set($data)->where(['dni' => 123456])->runQuery();
 Obtener los datos de una consulta.$papyrus->getRecords();
 Obtener el estado de una consulta.$papyrus->getStatus();
 M茅todos disponiblesPapyrus::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 = '');
 Contribuye
Verifica los problemas abiertos o abre un nuevo problema para iniciar una discusi贸n en torno a un error de software o caracter铆stica. 
Crea una bifurcaci贸n del repositorio en Github para realizar cambios.
Escribe una o m谩s pruebas para una nueva caracter铆stica o que muestre un error de software. 
Realiza cambios en el c贸digo para implementar la nueva caracter铆stica o para reparar el error de software.
Env铆a una petici贸n para que tus cambios sean aceptados, combinados y publicados.
 Gracias... |