Foros del Web » Programando para Internet » PHP »

Probleman llamando, en una clase, un método de otra clase...

Estas en el tema de Probleman llamando, en una clase, un método de otra clase... en el foro de PHP en Foros del Web. Hola! Tengo Dos clases: usuario y pregunta. Bien, hay un momento que en la clase pregunta (que solo contiene la id de usuario), necesito obtener ...
  #1 (permalink)  
Antiguo 18/12/2010, 09:32
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 2 meses
Puntos: 13
Probleman llamando, en una clase, un método de otra clase...

Hola!

Tengo Dos clases: usuario y pregunta.

Bien, hay un momento que en la clase pregunta (que solo contiene la id de usuario), necesito obtener toda la información del usuario: nombre, foto, ...

Lo estoy intentando así:

usuarios.php (solo pongo el contenido que tiene que ver con el problema)


Código PHP:
function __construct($id){
    
    
$consulta mysql_query("SELECT * FROM usuarios  WHERE id = '".$id."'");
        while(
$item mysql_fetch_array($consulta)){                              
            
$this->id $item['id'];
            
$this ->fid $item['fid'];
            
$this ->usuario $item['alias'];
            
$this ->password $item['pass'];
            
$this ->email $item['mail'];
            
$this ->fechar $item['fechar'];
            
$this ->ultima $item['ultima'];
            
$this ->img_src $item['img_src'];
            
$this ->reputacion =     $this ->fechar $item['reputacion'];
        }
}




function 
miniatura(){
    
$html_mini "<div>$this->usuario</div>";
    return 
$html_mini;


pregunta.php (solo pongo el contenido que tiene que ver con el problema)

Código PHP:
function get_autor(){
        
             
                
$us = new usuario($item['id']);
    
            return 
$us->miniatura();
}



function 
imprimir_titular(){
    
$html_t '<h1 class="prg'.$this->id.'" >[ '.$this->id_eval_q.' ] '.$this->get_autor().' pregunta: '.$this->pregunta.' , '.$this->fecha.'</h1>';
    return 
$html_t;

y el errror que me muestra:

Cita:
Fatal error: Call to undefined method usuario::miniatura() in /home/piscolab/public_html/keepyourlinks.com/recetorium/clases/pregunta.php on line 35
No entiendo por qué no accede al método de la clase usuarios, aunque me deje crear el objeto usuario :S

Detalles:
- atributos todos son protected, pero en principio estoy trabajando con métodos y no atributos.
- este error se muestra cuando ejecuta la linea en negrita...

gracias
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance
  #2 (permalink)  
Antiguo 18/12/2010, 11:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Probleman llamando, en una clase, un método de otra clase...

¿seguro que el método miniatura() existe dentro de la clase usuario?

porque php no va por ahí inventando errores, si eso dice que es, así debería ser....
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/12/2010, 14:14
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 2 meses
Puntos: 13
Respuesta: Probleman llamando, en una clase, un método de otra clase...

sí que está, además le he cambiado el nombre...

Código PHP:

class usuario{
    
    protected 
$id;
    protected 
$fid;
    protected 
$usuario;
    protected 
$password;
    protected 
$email;
    protected 
$fechar;
    protected 
$ultima;
    protected 
$img_src;
    protected 
$reputacion;
    
    
    
}

function 
__construct($id){
    
    
$consulta mysql_query("SELECT * FROM usuarios  WHERE id = '".$id."'");
        while(
$item mysql_fetch_array($consulta)){                              
            
$this->id $item['id'];
            
$this->fid $item['fid'];
            
$this->usuario $item['alias'];
            
$this->password $item['pass'];
            
$this->email $item['mail'];
            
$this->fechar $item['fechar'];
            
$this->ultima $item['ultima'];
            
$this->img_src $item['img_src'];
            
$this->reputacion =     $this ->fechar $item['reputacion'];
        }
}




function 
miniatura(){
    
$html_mini "<div>$this->usuario</div>";
    return 
$html_mini;

}

function 
registrar_usuario(){}
// devuelve boolean
function iniciar_sesion($usuario,$password){
    
    
// Buscar usuario
    // si existe, comparar password
    
    // iniciar variables de sesión
    
    // si el usuario quiere, iniciar cookies
    
    
    
}
    
    
    
// sesion destroy




 // devuelve URL
function getImagen(){
    return 
$this->img_src;
}


// devuelve String con Reputacion




// actualiza los parametros que se pasen
function editarUsuario(){}

function 
listar_usuarios(){}

function 
buscar_usuario($consulta){}




?> 
De hecho es de las pocas funciones qu ehay
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance
  #4 (permalink)  
Antiguo 18/12/2010, 14:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Probleman llamando, en una clase, un método de otra clase...

no amigo, estas completamente mal... estas dejando fuera de la clase los métodos...

mira este ejemplo:
Código PHP:
class Foo {
  protected 
$Bar;
  public function 
Candy()
  {
    return 
$this->Bar;
  }

¿si notas que el método esta dentro de la clase?

bueno, pues en tu clase no lo haces así... supongo que esa es la razón de tu problema...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 18/12/2010, 15:31
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 19 años
Puntos: 2
Respuesta: Probleman llamando, en una clase, un método de otra clase...

Estas colocando las funciones fuera de la definicion de la clase por eso no encuentra el metodo que estas solicitando.
__________________
Saludos!
Mty-NL..
  #6 (permalink)  
Antiguo 19/12/2010, 02:01
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 2 meses
Puntos: 13
Respuesta: Probleman llamando, en una clase, un método de otra clase...

gracias, vaya despiste más estupido... un saludo
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance

Etiquetas: poo
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 12:17.