Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Clases para DB y QUERY: ¿Por qué todo en la misma clase?

Estas en el tema de Clases para DB y QUERY: ¿Por qué todo en la misma clase? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola ¿Qué tal? Me pregunto por qué la gran mayoría crea una misma clase para la conexión y para las consultas... yo tengo estas dos ...
  #1 (permalink)  
Antiguo 28/12/2006, 22:33
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
Busqueda Clases para DB y QUERY: ¿Por qué todo en la misma clase?

Hola ¿Qué tal?

Me pregunto por qué la gran mayoría crea una misma clase para la conexión y para las consultas... yo tengo estas dos clases que hice hoy para un proyecto, separando: Conexión a la BD y Querys a la BD.

Me gustaría saber sus opiniones... estoy hace poco con POO en PHP por lo que sus comentarios me podrían llegar a servir de mucho!


Un saludo grande

Código PHP:

class mysqldb_conexion {

    
/* variables de conexión */
    
var $BaseDatos;
    var 
$Servidor;
    var 
$Usuario;
    var 
$Clave;

 
    
/* identificador de conexión y consulta */
    
var $Conexion_ID 0;


    
/*********************** METODOS ***********************/

    /* Constructor */

    
function mysqldb_conexion($bd ""$host "localhost"$user "nobody"$pass "") {
        
$this->BaseDatos $bd;
        
$this->Servidor $host;
        
$this->Usuario $user;
        
$this->Clave $pass;
    }


    
/*Conexión a la base de datos*/

    
function conectar($bd ""$host ""$user ""$pass ""){

        
// Si ya existe una conexión abierta al intentar conectar, la cerramos.
        
if ($this->Conexion_ID != "0") {
            
$this->cerrar();
        }
        

        
// Si me pasan valores, altero los valores globales de la clase con estos
        
if ($bd != ""$this->BaseDatos $bd;
        if (
$host != ""$this->Servidor $host;
        if (
$user != ""$this->Usuario $user;
        if (
$pass != ""$this->Clave $pass;

 
        
// Conectamos al servidor
        
$this->Conexion_ID = @mysql_connect($this->Servidor$this->Usuario$this->Clave) or die(mysql_error());

 
        
// Seleccionamos la base de datos
        
mysql_select_db($this->BaseDatos$this->Conexion_ID) or die(mysql_error());


         
// Si todo salió bien, retornamos el ID de conexión (lo que antes usabamos como $link)
        
return $this->Conexion_ID;
    }

 

    
/* Cerramos la conexion a la BD */

    
function cerrar() {
        
mysql_close($this->Conexion_ID);
        
$this->Conexion_ID "0";
    }


Código PHP:
class mysqldb_consulta {

    
/* Variables asociadas a consultas */
    
var $Consulta_ID 0;
    var 
$resultado;
    var 
$conexion;

    
/* Flag para limpiar automaticamente los resultados cuando sea necesario */
    
var $qflag 0;


    
/*********************** METODOS ***********************/

    /* Recibimos una referencia hacia la instancia "conexión": Ahorramos memoría por un poquito más de CPU Time */
    
function mysqldb_consulta(&$conexion) {
        if (
$conexion != "") { $this->conexion = &$conexion; }
    }


    
/* Realizamos un query a la base de datos */

    
function consulta($sql){

        
// Si la consulta es tipo "select", nos aseguramos de que se libere memoria.
        
if ( strtolower(substr($sql,0,6)) == "select") {

            if (
$this->qflag == 1) {
                
mysql_free_result($this->Consulta_ID);
                
$this->qflag 0;

            } else {

                
$this->qflag 1;
            }
        }


        
// Ejecutamos la consulta
        
$this->Consulta_ID = @mysql_query($sql$this->conexion->Conexion_ID) or die(mysql_error());

        return 
$this->Consulta_ID;
    }


    
/* Cargamos los resultados de la consulta en un ARRAY */

    
function get_array() {

            
$this->resultado mysql_fetch_array($this->Consulta_ID) or die(mysql_error());
            return 
$this->resultado;
    }


    
/* Devuelve el nombre de un campo de una consulta */

    
function nombrecampo($numcampo) {
        return 
mysql_field_name($this->Consulta_ID$numcampo);
    }


    
/* Devuelve el número de campos de una consulta */

    
function numcampos() {
        return 
mysql_num_fields($this->Consulta_ID);
    }


    
/* Devuelve el número de registros de una consulta */

    
function numrows() {
        return 
mysql_num_rows($this->Consulta_ID);
    }



    
/*
     * Muestra una tabla con los resultados de la consulta.
     * Esta función está pensada para utilizarse solo para testear
     * consulas.
     *
     */

    
function debug_results() {
        echo 
"<table border=1>\n";
 

        
// mostramos los nombres de los campos
        
for ($i 0$i $this->numcampos(); $i++){
            echo 
"<td><b>".$this->nombrecampo($i)."</b></td>\n";
        }

        echo 
"</tr>\n";
        
// mostrarmos los registros

         
while ($row mysql_fetch_row($this->Consulta_ID)) {

            echo 
"<tr> \n";

            for (
$i 0$i $this->numcampos(); $i++){
                echo 
"<td>".$row[$i]."</td>\n";
            }

            echo 
"</tr>\n";
        }
    }


    
/* Mueve el índice de mi query-array hacia la posición $indice. */

    
function seek($indice) {
        if (
$this->Consulta_ID != 0) {
            
mysql_data_seek($this->Consulta_ID$indice);
        } else {
            return 
0;
        }
    }


    
/* Limpiamos los resultados de una consulta */

    
function free() {

        if (
qflag == 1) {

            
mysql_free_result($this->Consulta_ID);
            
$this->qflag 0;
        }
    }

Saludos!!
  #2 (permalink)  
Antiguo 02/01/2007, 10:25
 
Fecha de Ingreso: enero-2004
Ubicación: Medellin
Mensajes: 178
Antigüedad: 20 años, 3 meses
Puntos: 8
Re: Clases para DB y QUERY: ¿Por qué todo en la misma clase?

lo ideal es meter un todo Clase, con sus correspondientes partes, por ejemplo cuando estamos hablando de un objeto especifico estamos hablando de sus propiedades.

Por ejemplo>
Clase camisa
como metodos tiene Color, tamaño, talla

ebn tu caso estamos hablando del objeto Base de datos
tendria como metodos conecion, consultas...

esa es mla mejor forma de trabajar, ya que con una clase se pueden tener las posibles conbinaciones que puede tener un objeto y en un futuro seria mas manejable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:56.