简体   繁体   中英

PHP. Calling function from a different class.

I am working with two classes: usuarios, preguntas.

In preguntas I store id_usuario which correspond to the id from user, ok. But sometimes I need to display more than the id, so I made a function in usuarios. php to print this info:

This is mi code for now

usuarios.php (I'm only including relevant code for this problem)

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 (i'm only including relevant code for this problem)

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;
} 

And this is the error:

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

Details: - Protected atributes

Any help will be wellcome

I copied you code, change content of methods and everything works

    class usuario {
function __construct($id){

    echo 'ok';
}




function miniatura(){
    echo 'ok';

}   

}




function get_autor(){


                $us = new usuario($item['id']);

            return $us->miniatura();
}

Show full classes because with Your code as shown in nothing wrong.

ok, this is the file where i'm calling both:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Recetorium > Preguntas - Pregunta o responde qué y cómo cocinar algo

Cargando..

and in router.php

// el usuario está iniciando sesion         

$iniciando = new sesion_usuarios();
if($iniciando->iniciar()){
    imprimir_sesion_iniciada();
}else{
    imprimir_formulario_sesion();
}

if(isset($_POST['inicio'])){

 // el usuario está iniciando sesion $iniciando = new sesion_usuarios(); if($iniciando->iniciar()){ imprimir_sesion_iniciada(); }else{ imprimir_formulario_sesion(); } 

}else if(isset($_POST['registro'])){ $registrando = new registro_usuarios(); if($registrando->register()){ imprimir_usuario_registrado(); }else{ imprimir_formulario_registro(); }

}else if(isset($_GET['que']) or isset($que)){

  if(isset($que)) $tarea = $que; else $tarea = $_GET['que']; if($tarea == 'registro'){ imprimir_formulario_registro(); }else if($tarea == 'login'){ imprimir_formulario_sesion(); }else if($tarea == 'salir'){ cerrar_sesion(); }else if($tarea == 'ultimas_preguntas'){ listar_preguntas(); }else if($tarea == 'nueva_pregunta'){ $tem = new pregunta(); $tem->imprimir_formulario; }else if($tarea == 'ultimas_recetas'){ $tem = new pregunta(); $tem->imprimir_formulario; } 

}else if(sesion()){ echo 'Pronto prodrás: Preguntar cosas, responder cosas y evaluar ambos. Publicar tus recetas, descubrir otras, evaluarlas y ser evaluado.'; }else{ $archivo = 'bienvenida.php';
include($archivo); imprimir_formulario_sesion();

}

?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM