Acabo de finalizar una pequeña clase para acceder a una base de datos MySQL, para poder programar por capas. A continuación, voy a mostrar la clase de AccesoBD, capaNegocio y capaPresentacion.
Y bueno, espero que me puedan dar opiniones sobre que sintaxis tengo mal, por ejemplo donde debería poner excepciones, donde no, y si está bien el metodo CierraBD de la clase accesoBD_5.
Creo que también le vendría bien a la gente ver esto, ya que más de uno verá un poco más claro como es el tema de programación por capas. De paso, espero que a alguien le pueda ser util esta pequeña clase.
Bueno, gracias y espero sus opiniones y comentarios.
Saludos.
AccesoBD_5
Código:
<? class AccesoBD_5{ //Variables Publicas public $errorBD; //Variables Privadas private $_servidor, $_usuario, $_clave, $_basedatos; private $objMySQL; function __construct($servidor, $usuario, $clave, $basedatos){ $this->_servidor = $servidor; $this->_usuario = $usuario; $this->_clave = $clave; $this->_basedatos = $basedatos; } //DESCRIPCIÓN: Función que nos indica si la conexión a la BD ha sido correcta. public function ConectarBD(){ global $objMySQL; $objMySQL = new mysqli($this->_servidor, $this->_usuario, $this->_clave, $this->_basedatos); if (mysqli_connect_errno()){ $this->errorBD="<b>AccesoBD->ConectarBD: </b>".mysqli_connect_error(); return false; } return true; } //DESCRIPCIÓN: Función que nos devuelve True si existe un registro. public function DevuelveScalar($sql){ $contador=0; if ($sentenciaSQL = $objMySQL->query($sql)){ while ($fila = $sentenciaSQL->fetch_assoc()) { $contador=1; } if ($contador == 1){ return true; }else{ return false; } } } //DESCRIPCIÓN: Devuelve Registros public function DevuelveSql(&$rs, $sql){ global $objMySQL; $indice=0; if (!$sentenciaSQL = $objMySQL->query($sql)){ $this->errorBD = "<b>AccesoBD->DevuelveSql: </b>".$objMySQL->error; return false; } while ($fila = $sentenciaSQL->fetch_assoc()) { $filas[$indice]=$fila; $indice++; } $rs = $filas; return true; } //DESCRIPCION: Escribe un registro. public function EscribeBD($camposNombres, $camposValores, $tablaNombre){ global $objMySQL; $sqlInsertar = 'insert into '. $tablaNombre . '('. $camposNombres .') values(' . $camposValores .')'; if(!$objMySQL->query($sqlInsertar)){ $this->errorBD = "<b>AccesoBD->EscribeBD: </b>".$objMySQL->error; return false; } return true; } // //DESCRIPCION: Funcion para actuañizar registros. $camposNombreValor recibe un Array Asociativa // con la estructura Campo-Valor. // public function ActualizaBD($camposNombreValor, $condicion='', $tablaNombre){ global $objMySQL; $CampoValor=''; reset($camposNombreValor); while (list($campo, $valor) = each($camposNombreValor)){ $CampoValor=$CampoValor . "," . $campo ."=" . $valor; } //quito la primera coma. $tamanioCadena = strlen($CampoValor); $CampoValor = substr($CampoValor, 1, $tamanioCadena); if ($condicion == ''){ $sqlActualizar = 'update '. $tablaNombre . ' set ' . $CampoValor; }else{ $sqlActualizar = 'update '. $tablaNombre . ' set ' . $CampoValor . " where ". $condicion; } if(!$objMySQL->query($sqlActualizar)){ $this->errorBD = "<b>AccesoBD->AztualizaBD: </b>".$objMySQL->error; return false; } } // //DESCRIPCION: Elimina registros. // public function EliminaBD($condicion='', $tablaNombre){ global $objMySQL; if($condicion != ''){ $sqlEliminar = 'delete from '. $tablaNombre . ' where ' . $condicion ; }else{ $sqlEliminar = 'delete from '. $tablaNombre; } if(!$objMySQL->query($sqlEliminar)){ $this->errorBD = "<b>AccesoBD->EliminaBD: </b>".$objMySQL->error; return false; } return true; } public function CierraBD(){ global $objMySQL; if(!$objMySQL->close()){ $this->errorBD = "<b>AccesoBD->CierraBD: </b>".$objMySQL->error; return false; } return true; } } ?>
capaNegocio
Código:
<? require('configuracion.php'); require('accesoBD_5.php'); class testNegocio{ private $objBD; public $errorNegocio; function __construct(){ global $objBD; try{ $objBD = new accesoBD_5(SERVIDOR, USUARIO, CLAVE, BASEDATOS); }catch (Exception $ex){ die($ex); } } public function InsertarTexto($txtTexto){ global $objBD; if(!$objBD->ConectarBD()){ $this->errorNegocio = "Error Conexion: ".$objBD->errorBD; return false; } if(!$objBD->EscribeBD('texto', ' "'.$txtTexto.'" ', 'tpresentacion')){ $this->errorNegocio = "Error Escritura: ".$objBD->errorBD; return false; } return true; } public function EliminarTexto($txtCondicion){ global $objBD; if(!$objBD->ConectarBD()){ $this->errorNegocio = "Error Conexion: ".$objBD->errorBD; return false; } if ($txtCondicion == ''){ if(!$objBD->EliminaBD('', 'tpresentacion')){ $this->errorNegocio = "Error Escritura: ".$objBD->errorBD; return false; } }else{ if(!$objBD->EliminaBD('texto= "'.$txtCondicion.'" ', 'tpresentacion')){ $this->errorNegocio = "Error Escritura: ".$objBD->errorBD; return false; } } if(!$objBD->CierraBD()){ $this->errorNegocio = "Error Conexion: ".$objBD->errorBD; return false; } return true; } public function MuestraTextos(){ global $objBD; if(!$objBD->ConectarBD()){ $this->errorNegocio = "Error Conexion: ".$objBD->errorBD; return false; } if (!$objBD->DevuelveSql($resultado, 'select * from tpresentacion')){ die($objBD->errorBD); } if(!$objBD->CierraBD()){ $this->errorNegocio = "Error Conexion: ".$objBD->errorBD; return false; } foreach($resultado as $fila){ echo $fila['texto'].'</br>'; } } public function ModificaTexto($campoTexto, $condicion){ global $objBD; if(!$objBD->ConectarBD()){ $this->errorNegocio = "Error Conexion: ".$objBD->errorBD; return false; } $misCampos = array('texto'=>'"' . $campoTexto . '"'); if(!$objBD->ActualizaBD($misCampos, $condicion, 'tpresentacion')){ $this->errorNegocio = "Error Escritura: ".$objBD->errorBD; return false; } return true; } } ?>
capaPresentacion
Código:
<? require('testNegocio.php'); $objNegocio = new testNegocio(); /* $objNegocio->EliminarTexto('Soy Nahir Florencia Benítez'); $objNegocio->InsertarTexto('Soy Nahir Florencia Benítez'); */ //$condicion = 'texto = "Soy Nahir Florencia Benítez"'; //$objNegocio->ModificaTexto('Soy Nanu', $condicion); $objNegocio->MuestraTextos(); ?>