lunes, 8 de marzo de 2010

Clase de abstracción de datos para PHP-MySQL (Entidades/Business Objects)

Cuando trabajamos en PHP muchas veces tenemos tareas repetitivas de para crear inserts, updates y cualquier cantidad consultas a la base de datos. Si mejoramos el método podemos encapsular clases que abstraen las tablas en la base de datos y las llamamos "Entidades" o "Business Objects". Por ejemplo si tenemos una tabla "empleados" podriamos crear la entidad "class Empleado" el cual encapsula métodos Read y Save para guardar registros de empleados en particular, junto a todos los métodos que acompañan la clase.

Para automatizar el proceso de crear entidades en PHP, he creado una clase llamada genericDB, que se encarga de crear métodos set, get, getId, setId para cualquier tabla que tenga un id autonumérico (como primary key).

Podriamos ejemplificar su uso suponiendo que tenemos una tabla llamda "empleados" con un id_empleado autonumerico como clave primaria. El código para utilizar la tabla empleado (como entidad) quedaría asi:

<?php

//* Para leer un registro
$miempleado = new GenericDB("empleados");
$miempleado->setId(5);
if(
$miempleado->Read()) {
echo(
"El empleado existe<br>");
echo(
"El nombre del empleado es ".$miempleado->get("nombre"))
}


//* Para modificar un registro:
$miempleado = new GenericDB("empleados");
$miempleado->setId(5);
if(
$miempleado->Read()) {
echo(
"El empleado existe<br>");
echo(
"El nombre del empleado es ".$miempleado->get("nombre")."<br>")
echo(
"modificamos el nombre<br>");
$miempleado->set("nombre","Pedro");
if(
$miempleado->Save()) {
echo(
"El empleado se ha salvado como ".$miempleado->get("nombre"));
}
}

// Para crear un nuevo registro (nombre, apellido y cedula son campos en la tabla empleados):

$miempleado = new GenericDB("empleados");
$miempleado->set("nombre","Carlos Alberto");
$miempleado->set("apellido","Perez");
$miempleado->set("cedula","12346334");
if(
$miempleado->Save()) {
echo(
"Enhorabuena, se ha creado un nuevo registro <br>");
echo(
"El id del nuevo registro es ".$miempleado->getId()."<br>");
} else {
echo(
"error: ".$miempleado->_message);
}

?>
Puedes bajar el código de la clase genericDb haciendo click aqui.

No hay comentarios: