Foros del Web » Programando para Internet » PHP »

Una de OOP en PHP

Estas en el tema de Una de OOP en PHP en el foro de PHP en Foros del Web. Buenas chicos, estoy con un problema bastante gordo encima. Necesito referenciar una varaible de una clase a un objeto que creo dentro de esa clase. ...
  #1 (permalink)  
Antiguo 30/01/2003, 17:30
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
Una de OOP en PHP

Buenas chicos, estoy con un problema bastante gordo encima. Necesito referenciar una varaible de una clase a un objeto que creo dentro de esa clase.

El objeto lo creo asi:

Código PHP:
$modulos = &new $this->modulos[$i](&$this->gui['Gtk_Window']); 
Como veis le paso al objeto la variable $this->gui que es un array y le paso tambien la referencia con el &. Luego en la clase que crea el objeto le paso al constructor:

Código PHP:
function constructor(&$var){
print_r($var);
}
//muestra la estructura de la variable $var
//en este caso un objeto Gtk_Window 
lo k no entiendo es por que no me deja usar instancias de esa variable :-8 me da un warining que no entiendo:

Missing argument 1 for constructo() a ver si alguien sabe por k.
__________________
Usuario registrado de Linux #288725
  #2 (permalink)  
Antiguo 30/01/2003, 19:06
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
Weno ya solucione el problema ... bueno lo e replanteado jeje y e partido desde las bases, con este codigo si me funciona ahora a implementarlo al codigo general:

Código PHP:
<?
class B
{    
    function 
B(&$var)
    {
        
//print_r($var);
        
echo $var->gui['hola'];
    }
}

class 
A
{
    var 
$gui;
    
    function 
A()
    {
        
$this->gui = array();
        
$this->gui['hola'] = 2;
        
//echo $this->gui['hola'];
        
$modulo = new B(&$this);
    }

}

$ob = new A;
?>
Por cierto alguien sabe a que se deben los Missing argument ?¿
__________________
Usuario registrado de Linux #288725
  #3 (permalink)  
Antiguo 30/01/2003, 20:55
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años, 1 mes
Puntos: 68
Epples...
Felicitaciones...
1) por resolver tu problema...
2) por darme un buen dolor de cabeza tratando de pensar poque necesitas referenciar un objeto de esa manera
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #4 (permalink)  
Antiguo 31/01/2003, 01:27
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
1. Gracias
2. Necesito referenciar de esa maneraya que necesito manejar desde la subclase la variable de la superclase, es decir necesito manejar la varaible $this->gui['Gtk_Window'] desde la clase que genero a traves de un bucle y que me produce neew nombre(&$this->gui['Gtk_Window']) de esa manera en la clase nombre le paso al constructor la referencia function nombre(&$valor){} y puedo trabajar dentro del constructor con la variable de la superclase, por ejemplo en la subclase podria cambiar el titulo usando un metodo de la variable de la superclase .

Nose si me e explicado pero weno .... son mis paranoias
__________________
Usuario registrado de Linux #288725
  #5 (permalink)  
Antiguo 31/01/2003, 05:19
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 16 años, 2 meses
Puntos: 6
Cita:
Por cierto alguien sabe a que se deben los Missing argument ?¿
El warning esta relacionado con la perdida de un argumento en una funcion en tu caso en el metodo constructor.
Ejemplo:
Código PHP:
function X$uno$dos )
{
   echo 
"$uno $dos";
}

X('hola'); 
Eso te generara un warning Missing argument 2 for X, en tu caso la variable $var del constructor no recivio ningun parametro, por eso te marco el warning y por consiguiente no podias referenciar a la variable $this->gui. Espero haberme explicado
  #6 (permalink)  
Antiguo 31/01/2003, 06:55
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
si perfectamente, pero lo jodi ode todo es k no se pierde por k al pasarlo
Código PHP:
function constructor(&$var){
print_r($var);

Eso si me devuelve la estructura de esa variable pero lo k no puedo hacer es trabajar con sus metodos.

El caso es que e simplificado el ejemplo y si funciona pero en mi programa pierdo el parametro y jeje nose por que ;( a ver si encuentro el fallo y lo comunico
__________________
Usuario registrado de Linux #288725
  #7 (permalink)  
Antiguo 31/01/2003, 07:14
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
Ya encontre el problema jeje, la culpa lo tiene esto:
Código PHP:
$funciones_objeto get_class_methods(get_class($modulos));
$this->gui[$this->modulos[$i].'_label'] = &new GtkLabel(ucfirst($this->modulos[$i]));        
$this->gui[$this->modulos[$i].'_label']->show();
$this->gui['Gtk_NoteBook_modulos']->append_page(call_user_method($funciones_objeto[0], $modulos), $this->gui[$this->modulos[$i].'_label']); 
Es decir:
Código PHP:
call_user_method($funciones_objeto[0], $modulos
Ya que a esa funcion no le paso la variable jeje a ver si veo la posivilidad de poder pasarselo. Pero al menos ya se donde esta el fallo
__________________
Usuario registrado de Linux #288725
  #8 (permalink)  
Antiguo 31/01/2003, 07:48
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
ya ta solucionado, como la respuesta en php.net:

Código PHP:
call_user_method($funcion,$objeto,$parametros); 
y todo funciona perfectamente, claro esta k los parametros se deben pasar referenciados por lo cual

Código PHP:
&$parametros 
Y listo
__________________
Usuario registrado de Linux #288725
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:12.