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

Comunicación de Php con la base de datos

Estas en el tema de Comunicación de Php con la base de datos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola. En el proyecto de un juego de balonmano manager online que estoy desarrollando (http://blog.bmtotal.net) me ha surgido una duda al plantearme la conexión con ...
  #1 (permalink)  
Antiguo 23/12/2008, 10:19
 
Fecha de Ingreso: abril-2007
Mensajes: 114
Antigüedad: 17 años
Puntos: 2
Comunicación de Php con la base de datos

Hola.

En el proyecto de un juego de balonmano manager online que estoy desarrollando (http://blog.bmtotal.net) me ha surgido una duda al plantearme la conexión con la base de datos.

Resulta que quiero separar las consultas sql del código php, y por ello crearé métodos específicos que a partir de los parámetros dados (arrays campo-valor, etc.) y de un archivo xml donde defino los campos clave, campos obligaotirios, tipos de datos, etc. construirán las consultas correspondientes que se enviarán a la base de datos.

El caso es que no sé qué es mejor, si implementar estos métodos para cada una de las clases, es decir, en la clase "Jugador" crear un método llamado "Jugador_Insertar" y ahí construir la consulta, o crear una nueva clase que contenga todos los métodos que se comuniquen con la base de datos (es decir, una sola clase que contenga los métodos: "Jugador_Insertar", "Jugador_Consultar", "Equipo_Insertar", "Equipo_Editar", etc.) .

No sé si me he explicado bien, de no ser así, por favor, avisadme que intento expresarme mejor.

Un saludo
  #2 (permalink)  
Antiguo 23/12/2008, 13:10
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: Comunicación de Php con la base de datos

Que tal Paloto

Primer pregunta, qué es eso de métodos llamados "Jugador_Insertar", "Jugador_Consultar", etc.

¿Que nomenclatura estás usando?

Trata de hacer una división en 3 capas, y donde una de ellas resuelva la persistencia, clases representantes que se comuniquen con la base de datos y obtengan los datos.

Del tipo:

JugadorInterfaz -> Jugador -> JugadorPersistencia

Y define métodos más del tipo jugador->insertar(), no cómo lo explicas más arriba.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #3 (permalink)  
Antiguo 23/12/2008, 13:19
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Comunicación de Php con la base de datos

Lo que tú quieres es Active Record (http://es.wikipedia.org/wiki/ActiveRecord).
La mayoría de los frameworks de PHP lo implementan. Mejor si aprovechas lo que ya existe. Te ahorrará tiempo.

Si aún así prefieres hacerlo tú mismo lo ideal es que te crees una clase base de nombre Elemento, por ejemplo. En esa clase creas los metodos insertar, actualizar, consultar, etc, y un atributos donde se pueda indicar el nombre de la tabla que deberá utilizar.
Luego para la clase Jugador haces que extienda de Elemento y simplemente le indicas el nombre de la tabla que tiene que usar.
Los campos de la tabla bien los puedes indicar en otro atributo o hacer que la clase Elemento los obtenga a través de una consulta SQL. Luego los guardas en un archivo temporal para optimizar recursos y ya está.

Espero haberme explicado correctamente. Aún así sigo pensando que es mejor que aproveches un framework que te da todo eso y mucho más.

Un saludo.
  #4 (permalink)  
Antiguo 23/12/2008, 16:23
 
Fecha de Ingreso: abril-2007
Mensajes: 114
Antigüedad: 17 años
Puntos: 2
Respuesta: Comunicación de Php con la base de datos

Gracias a los dos por las respuestas.

enriqueplace, gracias por tu respuesto. Es lo que estoy intentando, separar en tres capas, pero es mi primera experiencia en ello y me está costando un poco empezar.

En principio me voy a quedar con lo que dice CAT Shannon de la clase "Elemento", pero antes de decidir, voy a verme lo de "ActiveRecord" a ver qué tal.

Repito, muchas gracias por la ayuda. Ya contaré por aquí qué es lo que hago finalmente.

Saludos
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 09:41.