Estoy colgado con el asunto de la Herencia y las interfaces.. Hasta ahora he podido entender que la herencia es una relacion de generalizacion o parentesco, el hijo hereda atributos y metodos de su padre, permitiendo hacer uso de los mismos, en dependencia de la declaracion...
Mis preguntas son las siguientes:
Que ventaja se obtiene al utilizar interfaces? es solo para respetar el diseño o permite alguna ventaja como lo hace la herencia al heredar metodos y atributos?
Se puede utilizar una clase padre y una hija en un mismo archivo o clase derivada, puesto que por ejemplo yo tengo este codigo, pero si se fijan incluyo imagen y a la vez multimedia, que imagen es hijo de multimedia pero a a la vez trabajan juntos, la situacion es que no me gustaria utilizar el objeto imagen-> y obtener los metodos de su padre siendo que el elemento tratado no sea una imagen en el codigo fuente que aqui publico podrian ver a lo que me refiero... ya que aqui trato dos tipos, uno que es la imagen del libro y otro que es el libro en si, entonces utilizo la libreria imagen para tratar la portada y utilizo la libreria multimedia para tratar el libro... seria conveniente crear otra clase para manejar archivos? que conflicto tendria al usar una clase Archivos y la Clase imagen, ambas heredadas de Multimedia?
Como aplicar interfaces en mi caso!!! ayuda
Código PHP:
Ver originalrequire_once('../lib/Servidor.php');
require_once('../lib/Imagen.php');
require_once('../lib/Multimedia.php');
require_once('../lib/Texto.php');
class Subir_Libro{
private $server;
private $imagen;
private $multimedia;
private $texto;
private $datos;
private $iduser;
private $peso;
private $titulo;
private $categoria;
private $idioma;
private $descripcion;
private $formato;
private $portada;
private $portada_thumb;
private $_archivo_libro;
private $_imagen_libro;
private $resultado;
private $enlace_libro;
private $destino_libro;
public function __construct($archivo,$datos){
$this->datos=$datos;
$this->server=new Servidor;
$this->multimedia=new Multimedia($archivo,'libro');
$this->texto=new Texto;
$this->_archivo_libro=$this->multimedia->obtener_propiedades_archivo();
$prefijo=$this->multimedia->generar_prefijo();
$this->destino_libro="../biblioteca/_".$this->datos['id'].'/'.$prefijo."_".$this->texto->limpiar_caracteres_especiales($this->_archivo_libro['nombre']);
$this->enlace_libro=$prefijo.'_'.$this->texto->limpiar_caracteres_especiales($this->_archivo_libro['nombre']);
$this->_imagen_libro=$archivo;
}
private function formatear_datos(){
$formatos_libro=array('rar','doc','docx','pdf'); $this->idioma=$this->datos['idioma'];
$this->categoria=$this->datos['categoria'];
$this->iduser=$this->datos['id'];
$this->formato=$this->multimedia->obtener_formato($this->_archivo_libro['nombre'],$formatos_libro);
$this->peso=$this->texto->formato_peso($this->_archivo_libro['tamano']);
}
private function procesar_informacion(){
$this->formatear_datos();
$formatos_libro=array('rar','doc','docx','pdf'); try{
if(!$this->multimedia->valida_formato($formatos_libro,$this->_archivo_libro['objeto'])){
throw new Exception('{"activo":"ERROR","error":"Por favor seleccione un formato de archivo correcto para su libro"');
}
/*Subida de imagen*/
if(isset($this->_imagen_libro
['imagen'])){ $imagen_objeto=new Imagen($this->_imagen_libro);
$archivo=$imagen_objeto->obtener_informacion_imagen();
$prefijo=$this->multimedia->generar_prefijo();
$this->portada="../biblioteca/_".$this->iduser.'/portada/'.$prefijo."_".$this->texto->limpiar_caracteres_especiales($archivo['nombre']);
$this->portada_thumb="../biblioteca/_".$this->iduser.'/portada/thumb/'.$prefijo."_".$this->texto->limpiar_caracteres_especiales($archivo['nombre']);
$this->multimedia->copiar_archivo($archivo['dir_temp'],$this->portada);
$this->multimedia->copiar_archivo($archivo['dir_temp'],$this->portada_thumb);
$imagen_objeto->set_directorio($this->portada);
list($ancho,$alto,$tipo)=$imagen_objeto->obtener_propiedades(); if($ancho>800 or $alto>600){
$imagen_objeto->generar_imagen(700);
}
$imagen_objeto->set_directorio($this->portada_thumb);
list($ancho,$alto,$tipo)=$imagen_objeto->obtener_propiedades(); if($ancho>100){
$imagen_objeto->generar_imagen(110);
}
}else{$this->portada="../imagenes/librod.png";}
/*subida de libro*/
$this->multimedia->mover_archivo($this->_archivo_libro['dir_temp'],$this->destino_libro);
$query='CALL biblioteca('.$this->iduser.',"'.$this->titulo.'","'.$this->descripcion.'","'.$this->enlace_libro.'","'.utf8_decode($this->portada).'","'.utf8_decode($this->portada_thumb).'","'.$this->idioma.'","'.$this->categoria.'","'.$this->formato.'","'.$this->peso.'");'; if($this->server->query($query)){
$this->resultado='{"activo":"ACTIVO","imagen":"'.$this->portada_thumb.'","peso":"'.$this->peso.'","formato":"'.$this->formato.'","idioma":"'.$this->idioma.'","titulo":"'.$this->titulo.'"}';
}
}catch(Exception $e){
$this->resultado=$e->getMessage();
}
}
public function get_resultado(){
$this->procesar_informacion();
return $this->resultado;
}
}