Foros del Web » Programando para Internet » PHP »

objeto para consultas de base de datos

Estas en el tema de objeto para consultas de base de datos en el foro de PHP en Foros del Web. Estoy queriendo implementar el patron MVC. Pero aún no se como separar el codigo PHP del codigo de consultas mysql. Yo tengo una estructura de ...
  #1 (permalink)  
Antiguo 10/08/2010, 10:15
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
objeto para consultas de base de datos

Estoy queriendo implementar el patron MVC. Pero aún no se como separar el codigo PHP del codigo de consultas mysql.

Yo tengo una estructura de varias funciones. Dentro de cada una de esas funciones tendría que crear un objeto dbConsults? Creo que no (aunque vi algo llamado singleton que lo haría aceptable).

Tengo entonces que pasar a cada función el objecto como parametro? Que lio. Mis llamadas a funcion estan en la seccion de html (la vista).

La que me queda es usar global $dbConsults;

En definitiva, globals es la mejor opcion?

Otra pregunta, pero relacionada. Suponiendo que todas mis funciones del controlador php sean partes de un objeto, el caso es el mismo que comenté arriba? Es decir, puedo declarar un objeto dbConsults en el constructor y usar globals para accederlo desde cada funcion? O al incluirlo en el constructor ya tendría acceso global al él?
  #2 (permalink)  
Antiguo 10/08/2010, 10:26
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: objeto para consultas de base de datos

hola
bueno, pues yo te sugiero que hagas uso de alguno de los tantos frameworks que tiene php y ya tiene implementado ese modelo, pues hablas de las vistas, de los controladores, pero no de los modelos, y pues en los que yo he revisado, lo que hacen es usar el controlador como enlace entre el modelo y la vista, así en el controlador se llama a las operaciones que tenga el modelo, se hace lo que se requiere, y luego se pasa el resultado a la vista, o si quieres hacerlo tú pues date un chapuzón en la web sobre ese tema, y tomalo con calma pues siempre es algo denso
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 10/08/2010, 10:29
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: objeto para consultas de base de datos

Estoy de chapuzon. Y me va a tomar unos días más, veo.

Estoy queriendo implementar el MVC por mí mismo, convirtiendo un proyecto que tengo. Y aún sin usar frameworks, para recién luego comenzar un proyecto desde cero con alguno.

Gracias por tus comentarios.
  #4 (permalink)  
Antiguo 10/08/2010, 11:24
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años, 6 meses
Puntos: 60
Respuesta: objeto para consultas de base de datos

Hay varias maneras de lograr "des-acoplar" la persistencia de datos osea la base de datos de tus vistas.

Si entiendes el concepto de "MVC" sabras que la forma correcta de tener tu modelo sera "como tu lo desees" puedes utilizar ORM, Active Record, o algo tan simple como tener una variable que tenga todas las operaciones que harias con tu base de datos.

Ejemplos.

Al estilo Zend Framework 1.N

Código PHP:
class MiObjeto extends Zend_Db_Table_Abstract{

protected 
$_name'MITABLADEBASEDEDATOS';


Al estilo propiedad de tu objeto

Código PHP:

class DBMysql{

public function 
conectar(){}

public function 
obtenerRegistros(){
return 
mysql_fetch_assoc($blablabla);
}

}

class 
MiObjeto{

private 
$db;

public function 
__construct(){
$this->db = new DBMysql();
}

public function 
obtener(){
return 
$this->db->obtenerRegistros();
}



Y ya donde lo vayas a usar podrias usarlo asi.

Código PHP:
<?php
$obj 
= new MIObjeto();
//imprimir registros
$registros $obj->obtener();
foreach(
$registros as $registro){
echo 
$registro['campodelabasededatos'];
}
?>
Por decir algo.. :p
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #5 (permalink)  
Antiguo 10/08/2010, 11:30
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: objeto para consultas de base de datos

Entiendo. Gracias por tus ejemplos.

Última edición por mayid; 10/08/2010 a las 12:57

Etiquetas: objeto
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 21:15.