Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/01/2013, 16:55
Avatar de Cristy_blk
Cristy_blk
 
Fecha de Ingreso: abril-2010
Ubicación: Granada
Mensajes: 66
Antigüedad: 14 años, 11 meses
Puntos: 0
Hacer casting en un array

Hola! tengo un problemilla, a ver si me pueden echar una mano.
Tengo 2 clases, la clase Persona y la clase Alumno (que hereda de Persona). He creado varios objetos de tipo Persona y algunos de tipo Alumno y los he metido dentro de un array.
Estas dos clases tienen métodos comunes (por ejemplo toString) y en cada una de ellas muestro una información. Al recorrer el array solo me muestra el toString de los objetos Persona... Cómo podría diferenciarlos para poder mostrarlos??

os dejo parte del código, gracias adelantadas ^^

Clase Alumno:
Código PHP:
function toString(){
        
$resultado parent::toString() . "Está estudiando "$this->getTitulacion();
        
$resultado += "\nEstá matriculado en: <br>";

        foreach(
$this->asignaturas as $i => $j){
            
$resultado += $j->toString() . "<br>";
        }

        
$resultado += "Total de creditos : " $this->getNumCreditos();
        return 
$resultado;
    } 
Clase Persona
Código PHP:
function toString(){
        return 
"Nombre: " $this->nombre " nacido el " $this->fechaNacimiento->format("d/m/Y") ." <br>";
    } 
Index
Código PHP:
         include_once("Persona.php");
         include_once(
"Alumno.php");
         include_once(
"Asignatura.php");
         include_once(
"Comparador.php");

         
$asig1 = new Asignatura('1','PDOO',6);
         
$asig2 = new Asignatura('2','FIS',6);
         
$asig3 = new Asignatura('3','SO',6);

         
$p1 = new Persona('Ana', new DateTime('25-0-1971'));
         
$p2 = new Persona('Juan', new DateTime('14-4-1990'));
         
$p3 = new Persona('Pepa', new DateTime('5-10-2000'));
         
$p4 = new Persona('Andrea', new DateTime('26-0-1975'));
         
$a1 = new Alumno('Maria', new DateTime('13-7-1960'), 'informática');
         
$a2 = new Alumno('Antonio', new DateTime('5-10-2000'), 'informática');
         
$a3 = new Alumno('Ana', new DateTime('10-6-1995'), 'informática');

         try{
            
$a1->matricularAsignatura($asig1);
            
$a1->matricularAsignatura($asig2);
            
$a3->matricularAsignatura($asig2);
            
$a3->matricularAsignatura($asig3);
         }catch (
Exception $ex){
             echo 
$ex->getMessage();
         }
         
         
$personas = array();
         
array_push($personas$p1);
         
array_push($personas$p2);
         
array_push($personas$p3);
         
array_push($personas$p4);
         
array_push($personas$a1);
         
array_push($personas$a2);
         
array_push($personas$a3);
         
         foreach(
$personas as $p){
             if(
$p instanceof Alumno)
               echo 
$p->toString();
             else
               echo 
$p->toString();
         } 
__________________
Noticias recientes del mundo informático
La Mancha Negra