<?php
/*FormatoSimple v1.0
Formatos simples: Txt, Yaml, Properties e 'Ini
Cuando queremos transmitir datos, almacenar la configuración o guardar
datos para un uso posterior.
tellez.franco.aldo@gmail.com
CC BY-NC :https://creativecommons.org/licenses/by-nc/4.0/legalcode
*/
class FormatoSimple {
private $Archivo;
private $matrizDatos = array();
private $Extension = array(
0 => '.txt',
1 => '.ini',
2 => '.yml',
3 => '.properties');
function FormatoSimple($Archivo) {
$this->Archivo = $Archivo;
}
//muestra los datos de forma liteal
public function MostrarDatos() {
if (self::Extension()) {
return str_replace(chr(0xC2) . chr(0xA0), ' ', file_get_contents($this->Archivo));
} else {
self::ERROR('LECTURA');
}
}
//genera un nuevo archivo
public function NuevoArchivo($Datos) {
if (self::Extension()) {
if (file_exists($this->Archivo)) {
self::ERROR('EXISTENTE');
} else {
file_put_contents($this->Archivo, $Datos);
return TRUE;
}
} else {
self::ERROR('EXTENSION');
}
}
//elimina el archivo
public function EliminarArchivo() {
unlink($this->Archivo);
return TRUE;
}
//Escribir una cadena sobre un archivo
public function AgregarDatos($Datos) {
if ($Datos != '') {
file_put_contents($this->Archivo, "\n" . $Datos, FILE_APPEND);
return TRUE;
} else {
return FALSE;
}
}
//sobrescribe una cadena sobre un archivo
public function EditarDatos($Datos) {
if ($Datos != '') {
file_put_contents($this->Archivo, $Datos);
return TRUE;
} else {
return FALSE;
}
}
//apunta a una linea especifica otorgada
public function IrLinea($linea) {
return self::LineaDatos($linea);
}
//suprime los datos designados por el numero de linea
public function EliminarLinea($linea) {
if (self::LineaDatos($linea)) {
unset($this->matrizDatos[$linea - 1]);
self::EditarDatos($this->matrizDatos);
return TRUE;
} else {
return FALSE;
}
}
//sustituye la linea con los datos de la matriz por una cadena especifica.
public function EditarLinea($linea, $texto) {
if (self::LineaDatos($linea)) {
array_splice($this->matrizDatos, $linea - 1, 1, $texto . "\n");
self::EditarDatos($this->matrizDatos);
return TRUE;
} else {
return FALSE;
}
}
//comprueba que la extencion del archivo sea valida
function Extension() {
for ($i = 0; $i < count($this->Extension); $i++) {
if (substr($this->Archivo, strpos($this->Archivo, ".")) == $this->Extension[$i]) {
return $this->Extension[$i];
}
}
}
//lee el contenido del archivo especificado, y devuelve una matriz asociativa.
public function MapearDatos() {
foreach (file($this->Archivo) as $clave => $valor) {
$this->matrizDatos[$clave] = $valor;
}
return $this->matrizDatos;
}
public function ContarDatos() {
return count(self::MapearDatos());
}
//Comprueba si el índice o clave otorgada existe en la matriz y devuelve su valor
public function LineaDatos($linea) {
if ($linea != '') {
$linea = $linea - 1;
if (array_key_exists($linea, self::MapearDatos())) {
return $this->matrizDatos[$linea];
}
} else {
self::ERROR('LINEA');
}
}
//busca la cadena otorgada separada por un caracter y devuelve el numero de linea
public function BuscardorClave($clave, $separador) {
for ($i = 0; $i < count(self::MapearDatos()); $i++) {
if (substr($this->matrizDatos[$i], 0, strpos($this->matrizDatos[$i], $separador)) == $clave) {
return $i + 1;
break;
}
}
}
//busca la cadena de texto que es referida a la clave
public function BuscarValorClave($texto,$separador) {
return substr(self::IrLinea(self::BuscardorClave($texto, $separador)), strpos(self::IrLinea(self::BuscardorClave($texto, $separador)), $separador) + 1);
}
//busca la cadena y devuelve el valor despues del caracter "=" ,":" o definido
public function BuscarDato($texto,$separador=false) {
if($separador){
return self::BuscarValorClave($texto,$separador);
}else{
switch (self::Extension()) {
case ".ini" || ".properties":
return self::BuscarValorClave($texto,"=");
break;
case ".yml":
return self::BuscarValorClave($texto,":");
break;
}
}
}
public function ERROR($msg) {
echo "ERROR_" . $msg;
}
}
?>
Comentarios sobre la versión: 1.0 (2)