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

¿Instanciar un objeto dentro de otro y usarlo?

Estas en el tema de ¿Instanciar un objeto dentro de otro y usarlo? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. EDIT: ¿Como hago para editar el nombre del post? o_o Es: ¿Instanciar un objeto dentro de otro y usarlo? ¿Es posible? Dentro de mi clase, ...
  #1 (permalink)  
Antiguo 04/02/2009, 17:29
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años
Puntos: 0
¿Instanciar un objeto dentro de otro y usarlo?

EDIT: ¿Como hago para editar el nombre del post? o_o Es: ¿Instanciar un objeto dentro de otro y usarlo?

¿Es posible?

Dentro de mi clase, estoy instanciando a otro objeto con un nombre y clase bien definidos, pero no parece funcionar porque cuando intento acceder a un método de ese subobjeto instanciado, no ejecuta nada.

Última edición por AeroCross; 04/02/2009 a las 17:33 Razón: Mal título.
  #2 (permalink)  
Antiguo 04/02/2009, 17:58
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: ¿Instanciar un objeto dentro de otro e instanciarlo?

Cita:
Iniciado por AeroCross Ver Mensaje
EDIT: ¿Como hago para editar el nombre del post? o_o Es: ¿Instanciar un objeto dentro de otro y usarlo?

¿Es posible?

Dentro de mi clase, estoy instanciando a otro objeto con un nombre y clase bien definidos, pero no parece funcionar porque cuando intento acceder a un método de ese subobjeto instanciado, no ejecuta nada.
puedes poner el codigo?
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #3 (permalink)  
Antiguo 04/02/2009, 19:37
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: ¿Instanciar un objeto dentro de otro y usarlo?

Lo que estás intentando hacer es lo más natural del mundo y se llama "dependencia" entre objetos.

Escribe un ejemplo.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #4 (permalink)  
Antiguo 05/02/2009, 10:19
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años
Puntos: 0
Respuesta: ¿Instanciar un objeto dentro de otro y usarlo?

Código php:
Ver original
  1. class paging
  2.     {
  3.     public $self;
  4.     public $pagenum;
  5.     public $perpage;
  6.     public $maxpages;
  7.     public $page;
  8.    
  9.         function paging($sqlcol, $sqltable, $display_per_page)
  10.         {
  11.                 $this->self = $_SERVER["PHP_SELF"];
  12.                
  13.                 if(!isset($idConn))
  14.                 {
  15.                         $idConn = new databaseManager(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);
  16.                 }
  17.                    
  18.                 $idConn->query("SELECT COUNT('$sqlcol') FROM '$sqltable'");
  19.                 $this->pagenum = $idConn->getSelected();
  20.                 $this->perpage = $display_per_page;
  21.                
  22.                 if (empty($start)): $start = 0; endif;
  23.                
  24.                 $this->maxpages = $this->pagenum / $this->perpage;
  25.                 $this->page = ceil($start / $this->perpage) + 1;
  26.                
  27.                 if (isset($_GET["page"])): $this->page = $_GET["page"]; endif;
  28.         }
  29.        
  30.         function nextlink()
  31.         {
  32.             if ($this->pagenum < $this->maxpages)
  33.             {
  34.                 $page = $this->pagenum + 1;
  35.                 return '<a href="'.$this->self.'?page='.$this->page.'" title="Siguiente">Siguiente</a>';
  36.             }
  37.             else
  38.             {
  39.                 return FALSE;
  40.             }
  41.         }
  42.        
  43.         function prevlink()
  44.         {
  45.             if ($this->pagenum > 1)
  46.             {
  47.                 $page = $this->pagenum - 1;
  48.                 echo '<a href="'.$this->self.'?page='.$this->page.'" title="Anterior">Anterior</a>';
  49.             }
  50.             else
  51.             {
  52.                 return FALSE;
  53.             }
  54.         }
  55.     }

Claro, esto está todavía en construcción, no encuentro un buen script de paginación así qeu ando intentando el mío =)

Última edición por AeroCross; 05/02/2009 a las 10:22 Razón: Limpieza de código.
  #5 (permalink)  
Antiguo 05/02/2009, 10:28
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: ¿Instanciar un objeto dentro de otro y usarlo?

Donde está el error? Qué línea detectaste que no estás pudiendo acceder?

PD: mirando por arriba ya tengo una gran lista de detalles para corregir (estaría bueno que revisaras comentarios anteriores en este mismo foro hace poco).... como ser estándar de codificación, prohibidos los atributos públicos, etc.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #6 (permalink)  
Antiguo 05/02/2009, 11:02
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años
Puntos: 0
Respuesta: ¿Instanciar un objeto dentro de otro y usarlo?

El error está en la línea 18, esa línea no se ejecuta.

Y, ¿me podrías indicar donde puedo ver? De verdad lo agradecería mucho =)
  #7 (permalink)  
Antiguo 05/02/2009, 11:30
Avatar de chitoso  
Fecha de Ingreso: mayo-2008
Ubicación: Montevideo, Uruguay
Mensajes: 205
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: ¿Instanciar un objeto dentro de otro y usarlo?

Cuál es el error que te da? No será un error en la consulta SQL??

Un script de paginación: Digg Style Pagination Class
__________________
Pasión por la Música
  #8 (permalink)  
Antiguo 05/02/2009, 12:28
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: ¿Instanciar un objeto dentro de otro y usarlo?

Código php:
Ver original
  1. if(!isset($idConn))
  2.                 {
  3.                         $idConn = new databaseManager(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);
  4.                 }
  5.                    
  6.  
  7.                 $idConn->query("SELECT COUNT('$sqlcol') FROM '$sqltable'");

Prueba cambiarlo por esto:
Código php:
Ver original
  1. $idConn = new databaseManager(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);
  2.                 $idConn->query("SELECT COUNT('$sqlcol') FROM `$sqltable`");

Saludos
  #9 (permalink)  
Antiguo 05/02/2009, 14:27
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años
Puntos: 0
Respuesta: ¿Instanciar un objeto dentro de otro y usarlo?

El !isset es para no reinstanciar el objeto con el mismo nombre de variable. Estoy 100% seguro de que así funciona, pero el $idConn->query no hace nada en lo absoluto.
  #10 (permalink)  
Antiguo 05/02/2009, 14:46
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: ¿Instanciar un objeto dentro de otro y usarlo?

Si no lo quieres re-iniciar tienes que aplicar un patrón de diseño como Singleton, no basta usar !isset($var) ya que no es global ni nada por el estilo.

Saludos
  #11 (permalink)  
Antiguo 10/02/2009, 07:23
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: ¿Instanciar un objeto dentro de otro y usarlo?

Cita:
$idConn->query("SELECT COUNT('$sqlcol') FROM `$sqltable`");
¿ En el query no deberían estar las variables concatenadas ? Tal que así:

Cita:
$idConn->query("SELECT COUNT('" . $sqlcol . "') FROM `" . $sqltable . "`");
Un saludo;
  #12 (permalink)  
Antiguo 10/02/2009, 09:51
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿Instanciar un objeto dentro de otro y usarlo?

No. Encerrar un string con comillas dobles permite colocar variables dentro, y estas serán reemplazadas por su valor normal.

@AeroCross, a qué te refieres con que no funciona? SI no tienes un mensaje de error que te indique que estás tratando de llamar a un método en un objeto inexistente, entonces el problema es en tu otra clase, la que deseas instanciar.

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 06:20.