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

Consejos, clases, capa de abstraccion de BD y otras cosas

Estas en el tema de Consejos, clases, capa de abstraccion de BD y otras cosas en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola! Hace poquito que 'descubri' esto de la POO y reconozco que desde que me decidi a crear mis primeras clases, mi forma de trabajar ...
  #1 (permalink)  
Antiguo 06/07/2006, 18:33
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Consejos, clases, capa de abstraccion de BD y otras cosas

Hola!

Hace poquito que 'descubri' esto de la POO y reconozco que desde que me decidi a crear mis primeras clases, mi forma de trabajar mejoró un monton en todo sentido, velocidad y solucion de errores entre otras cosas. Bien, cree algunas clases, una para la conexion a BD MySQL, otra para subir y manipular archivos y otra clase para la paginacion de resultados con MySQL.

Mi duda es, y aqui es donde quiero que me aconsejen, si seguir creando mis propias clases o recurrir a algo como Adodb. Lo único que me detiene es que me baje por ejemplo adobdb y vi que tiene muchisimo código y que, si yo quisiera agregarle alguna funcionalidad, deberia comerme un monton de código que sinceramente me asusta. Haciendo mis propias clases tengo total control sobre mi código y se bien que hace cada linea... entonces es más facil hacer cambios o agregar cosas. Aunque quiza con adodb tampoco sea necesario que toque nada, no?

Bueno, agradeceré opiniones sobre esta duda que me surgio
__________________
Federico.

Mi página: www.jourmoly.com.ar

Última edición por Fridureiks; 06/07/2006 a las 18:52
  #2 (permalink)  
Antiguo 07/07/2006, 06:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Yo usaría Adodb .. es un proyecto de capa de abstracción de BBDD que tiene mucho tiempo en desarrollo .. mucha documentación y comunidad por detras que te podría ayudar si necesitas hacer algo con ella.

En muchos casos no "tocaras" Adobd sino que en el fondo lo que necesitaras es crearte tu classe en base a esta (una "extensión" tal vez) que haga algunas taréas própias de tu forma de trabajar ... pero en definitiva esto ya no sería de la capa de abastracción de BBDD .. más bien sería de la capa de "negocios"? (de la lógica de tu aplicación).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 07/07/2006, 11:08
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
No reinventes la rueda, sé inteligente y reutiliza todo lo que puedas, y solo pierde el tiempo con lo que interesa o con lo que no está hecho.

¡Sé productivo, maldición!
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #4 (permalink)  
Antiguo 07/07/2006, 11:29
 
Fecha de Ingreso: octubre-2005
Mensajes: 2
Antigüedad: 18 años, 6 meses
Puntos: 0
Conección a la base de datos

Aprovecho el tema para hacer una consulta:
Qué método les parece más correcto para re-utilizar una conección a la base de datos desde varias clases.
Hasta ahora vengo creando una instancia en el script principal, y luego dentro de las clases acudo a ella por medio de global.
Código PHP:

// prod_cargar.php
$oDB =& DB::Conectar(...);
...

// producto.class.php
class Producto {

   public function 
cargarProducto() {
      global 
$oDB;
      ...
   }

}

// cliente.class.php
class Cliente {

   public function 
cargarCliente() {
      global 
$oDB;
      ...
   }


También he visto que podría crearse una instancia dentro del método de la clase, y utilizando el patrón singleton, evitar re-instanciarla.
A ustedes cómo les queda más cómodo y qué les parece que sea lo más correcto?
Disculpen si no fuí claro, cualquier duda me dicen.
Saludos y muchas gracias!
  #5 (permalink)  
Antiguo 07/07/2006, 15:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Pues las dos formas estan bien, en mi caso yo evito usar variables globales, porque luego las puedes re-escribir de forma mas facil, lo que yo te recomiendo es utilizar el singleton, aparte, es la forma de usarlo via OOP, Globales son para programacion funcional.

:)
  #6 (permalink)  
Antiguo 07/07/2006, 23:21
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Singleton, toda la vida.

Con "global" rompes en "encapsulamiento".
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #7 (permalink)  
Antiguo 08/07/2006, 01:50
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
yo tengo la misma duda, en vez de una global, como se utiliza el Singleton?
  #8 (permalink)  
Antiguo 08/07/2006, 02:49
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
¿Cómo se utiliza el Singleton? Como todo patrón de diseño, se implementa donde se requiere.

Si buscas cualquier documentación de patrones, verás como se implementa el Singleton, pero a grandes rasgos es:

- Su función es devolver siempre la misma instancia de un objeto. Si no existe el objeto (la "primera vez" que se lo invoca) se crea. La segunda vez, se devuelve la misma instancia siempre.

- El constructor para cumplir con todo esto, debe ser privado (es decir, lo anulamos para que no se puedan crear libremente instancias).

Lo que puedes hacer es crear un método "getInstance" y que el resto de los objetos lo usen siempre que necesiten una instancia del objeto en cuestión; el Singleton.

¿Se entiende? ¡Implemente un ejemplo!
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #9 (permalink)  
Antiguo 08/07/2006, 19:58
 
Fecha de Ingreso: octubre-2005
Mensajes: 2
Antigüedad: 18 años, 6 meses
Puntos: 0
Muchas gracias por las respuestas.
  #10 (permalink)  
Antiguo 09/07/2006, 10:13
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Chicos muchas gracias por los consejos
La verdad es que me pondre a ver por cual Framework me decido, quiza Adodb pero no estoy del todo seguro... vere por aqui en este foro a ver que opina el resto jeje.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #11 (permalink)  
Antiguo 09/07/2006, 21:14
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
devuelta por aqui.

Estaba revisando la documentacion de Adodb y contento veo que tiene una clase para paginar, adodb-pager.inc.php

Pero aqui aparece algo de lo que me hacia dudar y lo que me hizo escribir este thread. Por ejemplo segun dice en la documentacion, este paginador devuelve ya armada una tabla con los resultados de la paginacion...

"El codigo de ADODB_Pager puede ser modificado por el programador para que las ligas sean imagenes en lugar de textos, y el aburrido fondo blanco tenga colores mas interesantes."

Pero a mi me gustaría que me devolviera directamente un arreglo con los resultados o algo similar, para yo poder manejarlos como yo quiera, me explico? Entonces es aca donde debo meterle mano a esa clase? o ya debo crearme uan clase que me pagine como yo quiero? :S

Quiza pido demasiado xD
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #12 (permalink)  
Antiguo 10/07/2006, 12:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Fridureiks
devuelta por aqui.

Estaba revisando la documentacion de Adodb y contento veo que tiene una clase para paginar, adodb-pager.inc.php

Pero aqui aparece algo de lo que me hacia dudar y lo que me hizo escribir este thread. Por ejemplo segun dice en la documentacion, este paginador devuelve ya armada una tabla con los resultados de la paginacion...

"El codigo de ADODB_Pager puede ser modificado por el programador para que las ligas sean imagenes en lugar de textos, y el aburrido fondo blanco tenga colores mas interesantes."

Pero a mi me gustaría que me devolviera directamente un arreglo con los resultados o algo similar, para yo poder manejarlos como yo quiera, me explico? Entonces es aca donde debo meterle mano a esa clase? o ya debo crearme uan clase que me pagine como yo quiero? :S

Quiza pido demasiado xD
Yo no soy usuario de AdoDB .. seguro que tendrá algún método que puedas acceder para obtener ese resultado sin formatear ..

De todas formas si bien "ADOdb" es casi un "standard" como capa de abstracción de BBDD .. no es la única.

Por ejemplo a mi me gusta bastante:

ezSQL
http://www.jvmultimedia.com/portal/node/6

Que tiene su própia classe de paginado integrada ..
http://www.jvmultimedia.com/portal/node/7
(sólo para Mysql y Oracle .. esto es un "contra" para esta classe)

(no acepta tantos motores de BBDD.. Luego tienes las clásicas de PEAR y algunas más ..).


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 17:29.