PHP Classes

File: README.spanish.md

Recommend this page to a friend!
  Classes of Omar Andr閟 Barbosa Ortiz   Papyrus   README.spanish.md   Download  
File: README.spanish.md
Role: Example script
Content type: text/markdown
Description: Example script
Class: Papyrus
Store and retrieve database data in files
Author: By
Last change:
Date: 7 years ago
Size: 7,659 bytes
 

Contents

Class file image Download

Papyrus: Almacenando datos en el sistema de archivos con PHP

Generalidades

El 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贸n

Para 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贸n

Papyrus necesita un arreglo de configuraciones y una ruta a la carpeta que contenga los archivos de almacenamiento.

Arreglo de configuraciones

Crea 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 almacenamiento

Los 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 almacenamiento

Como 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 ejemplos

Para 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();

Selecciones

El 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();

Borrar

Borrar todos los registros

$papyrus->deleteFrom('users')->runQuery();

Borrar un registro

$papyrus->deleteFrom('users')->where(['dni' => 123456])->runQuery();

Actualizar

La 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 disponibles

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 = '');

Contribuye

  1. Verifica los problemas abiertos o abre un nuevo problema para iniciar una discusi贸n en torno a un error de software o caracter铆stica.
  2. Crea una bifurcaci贸n del repositorio en Github para realizar cambios.
  3. Escribe una o m谩s pruebas para una nueva caracter铆stica o que muestre un error de software.
  4. Realiza cambios en el c贸digo para implementar la nueva caracter铆stica o para reparar el error de software.
  5. Env铆a una petici贸n para que tus cambios sean aceptados, combinados y publicados.

Gracias...

Omar Andr茅s Barbosa