Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/08/2009, 18:45
bigwhite
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 15 años, 5 meses
Puntos: 10
Exclamación

Hola!

Tengo un problema... una clase que usaba setters y getters "tradicionales" y ahora la estoy pasando a los metodos magicos correspondientes.

¿ el problema ? me ha cambiado la sintaxis... y ahora debo editar muchisimos archivos. Estoy bien ? o bien confundido?

Antes:
$video->setColor1('888888');

Ahora:
$video->color1 = '888888';

Es asi?
No es que la idea subyacente en POO es abstraerse de la implementacion ?

En esta clase "hija" (extendida) no logro poder ver los atributos de la clase padre!

Código PHP:
<?
class youtube extends video {  #clase hija: youtube  
 // url = source
    
  
function __construct($source=""){       
    
parent::__set('source',$source);
    
parent::setDefault();
    
parent::__set('brand','youtube');    
  }
  
  public function 
__set($var,$val){
    if (
$var=='id'){ // sobre-escribo el metodo "setId"
      
parent::__set('id',$id); 
      
parent::__set('source'," www  .youtube . com/v/$val");
    }
  }
  
  public function 
__get($var){
    return 
parent::__get($var);
  }
  
  function 
__toString (){ 
    return (
parent::__toString());
  }   

 
}  
# fin de clase 
?>


Cuando intento acceder a un atributo definido en un vector en la clase padre.... (ej: keywords)

Cita:
Fatal error: Call to undefined method youtube::keywords()
Ah! la clase padre ("video") comienza asi:

Código PHP:
<?
class video{
  protected 
$vector
  
  public function 
__set($var$val){
    
$this->vector[$var]=$val;
  }
  public function 
__get($var){    
    if(isset(
$this->vector[$var])){
      return 
$this->vector[$var];
    }else{
      return 
NULL;
    }      
  }
...
?>

Última edición por GatorV; 17/08/2009 a las 09:12