Buenas noches de nuevo.
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();
?>