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:
Ah! la clase padre ("video") comienza asi:Fatal error: Call to undefined method youtube::keywords()
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;
}
}
...
?>