Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/10/2011, 07:10
dukeblass
 
Fecha de Ingreso: mayo-2011
Mensajes: 171
Antigüedad: 13 años, 7 meses
Puntos: 32
Pregunta objetos en php 6

buenas, estaba leyendo un libro de PHP llamado
PHP 6 profesional escrito por Ed lecky tompson Con Steveen D y Thomas Myer, y trata de php6 y los objetos, el cual uno de sus ejemplos este :
Código PHP:
<?php header('Content-Type: text/html; charset=UTF-8');
interface 
BANDA {
    public function 
obtNombre();
    public function 
obtGenero();
    public function 
agrMusico(MUSICO $musico);
    public function 
obtMusicos();
}
interface 
MUSICO {
    public function 
agrIstrumento(INSTRUMENTO $instrumento);
    public function 
obtInstrumentos();
    public function 
enBanda(BANDA $banda);
    public function 
obtTipoMusico();
}
interface 
INSTRUMENTO {
    public function 
obtNombre();
    public function 
obtCategoria();
}
//////
class guitarrista implements MUSICO {
    private 
$nombre;
    private 
$apellido;
    private 
$tipoMusico;
    private 
$instumentos;
    private 
$bandaReferencia='';    
    function 
__contrunct($nombre$apellido) {
        
$this->apellido=$apellido;
        
$this->nombre=$nombre;
        
$this->instumentos=array();
        
$this->tipoMusico='guitarrista';
    }    
    public function 
obtNombre(){return $this->nombre.' '.$this->apellido;}
    public function 
agrIstrumento(INSTRUMENTO $instrumento){array_push($this->instumentos,$instrumento);}
    public function 
obtInstrumentos(){return $this->instumentos;}
    public function 
obtBanda(){return $this->bandaReferencia;}
    public function 
agrTipoMusico($tipoMusico){$this->tipoMusico=$tipoMusico;}
    public function 
enBanba(BANDA $banda){$this->bandaReferencia=$banda;}
    public function 
obtTipoMusico(){return $this->tipoMusico;}    
// [B]linea 38 es esta[/B]

class jefeGitarrista extends guitarrista {
    function 
__contrunct($nombre,$apellido) {
        
parent::__contrunct($nombre,$apellido);
        
$this->agrTipoMusico("jefe gitarrista");
    }
}

class 
bandaRock implements BANDA {
    private 
$musicos,$nombreBanda,$bandaGenero;
    function 
__construct($nombreBanda){
        
$this->nombreBanda=$nombreBanda;
        
$this->musicos=array();
        
$this->bandaGenero="rock";
    }
    public function 
agrMusico(MUSICO $musico){
        
array_push($this->musicos,$musico);
        
$musico->enBanda($this);
    }
    public function 
obtMusicos(){return $this->musicos;}
    public function 
obtNombre(){return $this->nombreBanda;}
    public function 
obtGenero(){return $this->bandaGenero;}
}

class 
guitarra implements INSTRUMENTO {
    private 
$itrNombre,$itrCategoria;
    function 
__construct($instrumentoNombre){
        
$this->itrNombre=$instrumentoNombre;
        
$this->itrCategoria='guitarra';
    }
    public function 
obtNombre(){return $this->itrNombre;}
    public function 
obtCategoria(){return $this->itrCategoria;}
}

//>> USO
    // fija valores
    
$losInormatiros = new bandaRock('Los Informaticos');

    
$alberto = new guitarrista('Alberto','Ramirez');
    
$mario = new guitarrista('Mario','Ramon');

    
$alberto->agrIstrumento(new guitarra('Gibson Les Paul'));
    
$mario->agrIstrumento(new guitarra('Fender Stratocaster'));
    
$mario->agrIstrumento(new guitarra('Hondo H-77'));

    
$losInormatiros->agrMusico($mario);
    
$losInormatiros->agrMusico($alberto);

    
// obtiene valores
    
    
var_dump($losInormatiros->obtMusicos()); // ver que hay aki antes de entrar en el foreach
    
    
foreach($losInormatiros->obtMusicos() as $musico){
        
//echo 'Musico: '.$musico->nombre().'<br>';
    
}
    echo 
'<hr>';
/* */
?>
se de PHP pero de objetos con php no tanto por eso me intereso este libro,

bien. La consulta es que en el ejemplo anterior, en el var_dump, tendria que darme el contenido de los músicos, pero por el contrario me sale este mensaje:
Código:
Fatal error: Class guitarrista contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (MUSICO::enBanda) in E:\miServidor\wb\php6\tes_musica.php on line 38
por lo cual no comprendo dad que esta exactamente como el ejemplo,

pienso que es por la versión de php ya que el elejmplo estara en la 6ta y mi version es 5.3.8, o el contains 1 abstract method que dice un método abstracto ?¿

como solucionar este problema