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 original
require_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(){ $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(); 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*/ $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); if($ancho>800 or $alto>600){ $imagen_objeto->generar_imagen(700); } $imagen_objeto->set_directorio($this->portada_thumb); 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; } }