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

Es posible definir un objeto dentro de otro...

Estas en el tema de Es posible definir un objeto dentro de otro... en el foro de Frameworks y PHP orientado a objetos en Foros del Web. la idea es la que sigue... tengo una clase que se conecta directamente a la base de datos para extraer los registros... ahora, en un ...
  #1 (permalink)  
Antiguo 28/08/2008, 15:20
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años
Puntos: 4
Pregunta Es posible definir un objeto dentro de otro...

la idea es la que sigue...

tengo una clase que se conecta directamente a la base de datos para extraer los registros...
ahora, en un framework ya biene lista la clase para accesos a datos por lo tanto la consulta es la siguiente

se puede definir ejp:

Código PHP:
class mono(){

    var 
tabla;
         
tabla = new objBDD();

    function 
getNombre(){
        return 
$this->tabla->query($sql);
    }

suponiendo que el objeto objBDD tiene como metodo query para el retorno de valores.

espero haber planteado con claridad mi duda...

gracias
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #2 (permalink)  
Antiguo 28/08/2008, 16:41
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: Es posible definir un objeto dentro de otro...

Primer pregunta, tienes acceso a PHP5? así actualizamos la sintaxis, ya que PHP4 ya está "descontinuado".

Este código falla, ya que tienes la tabla fuera de un método, lo correcto sería (usando estándares de Zend y PHP5):

Código PHP:
class Mono()
{

    private 
$_tabla;

    public function 
__construct()
   {
       
$this->_tabla = new objBDD();
   }  

    public function 
getNombre()
   {
        
        return 
$this->_tabla->query("SELECT *... ");
    }

De todas formas, no sé si estás preguntando "si se puede" por tema de sintaxis, o "si se puede" por tema de conceptos.

Sería recomendable que tu objeto resuelve lo general y tengas otro que resuelva lo concreto de la persistencia, es decir, que no tenga "Mono" manejar las sentencias SQL cuando son un problema de la "persistencia".

PD: me alegra por lo menos que no hagas "herencia" por el mero hecho de necesitar una conexión a la base de datos, error que he visto que cometen "programadores con experiencia".
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #3 (permalink)  
Antiguo 28/08/2008, 18:39
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años
Puntos: 4
Respuesta: Es posible definir un objeto dentro de otro...

Entiendo entonces que se puede hacer, pero solo en php5, de hecho no quisiera hacerlo, por un tema de conceptos. no se ve nada bien, y se enredaria mucho, per es necesario...

ahora bien, que pasa si tengo

Código PHP:
global $BaseDD;
    
$BaseDD = new objBDD;

class 
Mono()
{

    global 
$BaseDD;
    private 
$_tabla;

    public function 
__construct()
   {
       
   }  

    public function 
getNombre()
   {
        return 
$this->_tabla $BaseDD->query("SELECT *... ");
    }

PD: sorry olvide darte las gracias por la ayuda y pronta respuesta.... es agradable, y gracias por el elogio...
saludos
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo

Última edición por omar1977; 28/08/2008 a las 18:41 Razón: Dar las gracias
  #4 (permalink)  
Antiguo 28/08/2008, 19:32
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: Es posible definir un objeto dentro de otro...

Cita:
Iniciado por omar1977 Ver Mensaje
Entiendo entonces que se puede hacer, pero solo en php5, de hecho no quisiera hacerlo, por un tema de conceptos. no se ve nada bien, y se enredaria mucho, per es necesario...
No te entendí nada... se puede hacer en PHP4, pero si tienes PHP5, aprovecha su nueva sintaxis. Sobre que no se ve nada bien...qué?

Veo el código y no entiendo... estás probando por probar sin ejecutar el código?

Tus cambios no funcionan...

Código PHP:
global $BaseDD;
    
$BaseDD = new objBDD;

class 
Mono()
{

    global 
$BaseDD;
    private 
$_tabla;

    public function 
__construct()
   {
       
   }  

    public function 
getNombre()
   {
        return 
$this->_tabla $BaseDD->query("SELECT *... ");
    }

Por favor, prueba y lee los manuales antes.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 29/08/2008, 08:15
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Respuesta: Es posible definir un objeto dentro de otro...

global es un muy mala practica en PHP5, considerados unas de las malas practicas de OOP en PHP5, no estoy seguro pero es muy probable que lo eliminen de php6.
  #6 (permalink)  
Antiguo 29/08/2008, 13:36
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años
Puntos: 4
Respuesta: Es posible definir un objeto dentro de otro...

Cita:
No te entendí nada... se puede hacer en PHP4, pero si tienes PHP5, aprovecha su nueva sintaxis. Sobre que no se ve nada bien...qué?

Veo el código y no entiendo... estás probando por probar sin ejecutar el código?

Tus cambios no funcionan...
en efecto no funcionan, lo que escribi lo hice para ser claro con lo que necsito, que es puntualmente eso, por lo demas, te doy las gracias por aclararme el cuento, la duda principal era si se podia o no, no lo habia visto, y en los manuales no aparece ejemplificado, algo se menciona acerca del metodo liskov, pero no ejemplifica este caso en particular, lo planteo por que necesito desarrollar multiplataforma y multiversion, la idea es que sea vendible y no se ate a ningun Server en particular... obviamente preferiria hacerlo en PHP5 minimo.....

nuevamente gracias por tu respuesta...

si es cierto lo de global hace tiempo deje de usarlo prefiero la abstraccion

gracias
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #7 (permalink)  
Antiguo 29/08/2008, 15:06
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
Respuesta: Es posible definir un objeto dentro de otro...

En ese caso aplica el patrón Singleton, para tu objeto BDD, y no lo hagas global.

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 10:17.