Cita:
Iniciado por Italico76
Muy complejo para mi je je

/ te agradezco un monton todo el tiempo que le me haz dedicado

Neh, te aseguro que es una ilusión óptica ;)
Con respecto a la clase, algunas cosillas si me lo permites:
- La clase link no es abstracta por lo que no debería ser definida como tal, y la razón es que ninguno de los métodos en la clase carece de implementación, como tal vez te llegaste a confundir con alguna cosa, lo explico con ejemplos:
Esto es un método con implementación:
Código PHP:
function add_title($title){
$this->title="title='$title'";
}
En el método se ve "lo que se hace" con el parámetro pasado.
Esto es un método abstracto:
Código PHP:
abstract function add_title($title);
Acá sólo se ve que existe un método llamado add_title y que debe recibir un parámetro, pero en ningún momento se aprecia qué es lo que se hace con ese parámetro, por ello se considera y define como abstracto.
- El "self::" deberías usarlo cuando estés haciendo referencias a constantes o propiedades y métodos estáticos. No es que no puedas llamar a cualquier cosa self::metodo o self::propiedad o incluso clase::metodo, simplemente digamos que se ha tomado como una práctica (para evitar confusiones) el utilizar el operador de resolución de scope solo cuando se hace referencia a constantes y propiedades/métodos estáticos.
Aclaro, no está mal lo que hiciste, solo lo apunto =)
- El método show() de la clase link no necesita reasignar propiedades como te dije antes, simplemente con esto bastaría:
Código PHP:
function show(){
return "<a href='$this->url' $this->title >$this->anchor </a>";
}
- Ya que no veo validación alguna en las clases, recuerda hacerlas en alguna otra parte de forma tal que los parámetros que lleguen a utilizarce en las clases ya estén validados.