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

clase bd

Estas en el tema de clase bd en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas tengo una clase bd realiza las conexion y consultas de la bd.queria saber de que manera es mejor utluizarla. tengo una clase material con ...
  #1 (permalink)  
Antiguo 08/07/2012, 15:35
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 5 meses
Puntos: 2
clase bd

Buenas

tengo una clase bd realiza las conexion y consultas de la bd.queria saber de que manera es mejor utluizarla.

tengo una clase material con varias funciones.

1)

Código PHP:
Ver original
  1. class Material{
  2.  
  3. private Db = new Db();
  4.  
  5.   function get(){
  6.    
  7.             $sql = "
  8.             SELECT
  9.                 *
  10.             FROM material
  11.             WHERE
  12.                 id_material= ".$id."
  13.         ";
  14.        
  15.         this->Dd->query = $sql;
  16.  
  17.      
  18.  
  19.  
  20.   }
  21.  
  22. }


2)


Código PHP:
Ver original
  1. class Material{
  2.  
  3.  
  4.  
  5.   function get(){
  6.    
  7.                Db = new Db();
  8.             $sql = "
  9.             SELECT
  10.                 *
  11.             FROM material
  12.             WHERE
  13.                 id_material= ".$id."
  14.         ";
  15.        
  16.         Dd->query = $sql;
  17.  
  18.      
  19.  
  20.  
  21.   }
  22.  
  23. }


cual de las dos opciones es mejor?? tengo mas funciones dentro de material que la utlizan.


saludos
  #2 (permalink)  
Antiguo 08/07/2012, 17:42
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: clase bd

No, la idea de las clases es que sean REUTILISABLES, si defines DENTRO de la clase las sentencias SQL no podrás reutilizar la clase, lo que se hace es pasar la sentencia SQL como parametro....

Código PHP:
Ver original
  1. <?php
  2. class DB
  3. {
  4.      public function get($sql) {
  5.           //puede ser
  6.           return $this->query($sql);
  7.           //o puede ser
  8.           return mysql_query($sql,$this->conexion);
  9.      }
  10. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 11/07/2012, 00:21
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: clase bd

No entiendi muy bien. mi duda es si defino la clase bd en cada función de la clase material o si la defino dentro del constructor como private y después en cada función de la clase la llamo con el this. El ejemplo claro de lo que hablo esta mas abajo.
  #4 (permalink)  
Antiguo 11/07/2012, 09:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: clase bd

La respuesta es evidente, siempre es mejor dejarlo como un miembro de tu clase, así se ejecutará más rápido a estar levantando y borrando el objeto en cada método.
  #5 (permalink)  
Antiguo 11/07/2012, 10:08
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: clase bd

pero para pasarle el $sql a una funcion de la bd tengo que crear el objeto ($Db = new Db()) y mi duda es esa donde creo el objeto como private en el constructor de la clase material y despues en cada funcion lo llamo con this->db o lo creo en cada una de la funciones.
  #6 (permalink)  
Antiguo 11/07/2012, 10:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: clase bd

Es lo que te digo más arriba, es mejor tenerlo como una propiedad de tu clase y solo usarla en los métodos, o sea sí, en el constructor creas el objeto, y luego lo usas en cada método.

Saludos.

Etiquetas: bd, clase, sql
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 15:24.