Ver Mensaje Individual
  #5 (permalink)  
Antiguo 02/10/2008, 03:25
shilen79
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 17 años, 2 meses
Puntos: 11
Respuesta: Problema con el manejo de clases en PhP

Buenas! Ante todo muchas gracias por responder.

La verdad es que si necesito leer mas, porque ya consegui resolverlo y he tenido que cambiar muchas cosas y la mayoria por despistes .

No habia implementado clases aun en mis codigos, habia hecho normalmente webs modulares o trabajado con CMS , y la lie de tal forma, que ya habia una cantidad de aberraciones en el codigo que tela .

Cuelgo aqui el codigo resultante. Al final no he podido hacerlo mas general y seguro que para nada esta completamente pulido y optimo pero al menos de momento funciona y poco a poco lo podre ir optimizando:

Código:
class image{
	
		var $width=''; // ANCHO DE LA IMAGEN QUE VA A SER TRATADA
		var $height=''; //ALTO DE LA IMAGEN QUE VA A SER TRATADA
		
		var $img='';  // IMAGEN
		var $imgName='';//NOMBRE DE IMAGEN
		
		var $imgCopy='';
		
		var $imgPath='images/';
		
		var $imgDir=''; //DIRECTORIO DONDE SE ENCUENTRAN LAS IMAGENES
		
		var $imgTemp=''; //IMAGEN COPIA PARA LA SUBIDA AL SERVIDOR
		
		var $imgType=''; //EXTENSION DE LA IMAGEN
		var $imgSize=''; //TAMAÑO EN BYTES DE LA IMAGEN
		
		var $error='';
		
		var $imgNewX=''; //ANCHO DEL THUMB
		var $imgNewY=''; //ALTO DEL THUMB
		
		var $thumb='';
		var $thumbPath='thumbs/';
		
		
		function setImg(){
			
			$this->img=$_FILES['imagen'];
			$this->imgName=$_FILES['imagen']['name'];
			$this->imgTemp=$_FILES['imagen']['tmp_name'];
			$this->imgType=$_FILES['imagen']['type'];
			$this->imgSize=$_FILES['imagen']['size'];
			
		}
		
		
		function imgCheck(){
		
			if(!(strpos($this->imgType,"gif") || strpos($this->imgType,"jpeg") || strpos($this->imgType,"jpg") || strpos($this->imgType,"png"))){
			
				echo $this->error="La imagen debe tener como extension : JPEG, GIF, PNG.";
				return false;
				
				}else if($this->imgSize>200000){
					
					echo $this->error="La imagen no puede exceder el tamaño de 200Kb";
					return false;
				
				}else return true;
			
		}
		
		
		function imgUpload(){
			
				if(!move_uploaded_file($this->imgTemp,$this->imgPath.$this->imgName)){
				
					echo $this->error="No se pudo realizar la subida al servidor... Int$eacute;ntelo pasado unos minutos";
					return false;
				}
		
		}
		
		
		function imgCheckDuplicated(){ 
			
			if(is_dir($this->imgPath)){
			
				$this->imgDir=opendir($this->imgPath);
				while(false!==($imgFile=readdir($this->imgDir))){
				
					if($imgFile==$this->imgName){
						return 2;
					}
				
				}
			@closedir($this->imgPath);
			}
		
		}
		
		function imgLoadToResize($y){ //COMPRUEBA CUAL ES EL ARCHIVO SUBIDO Y GENERA EL THUMB . EL DATO A PASARLE ES LA ALTURA PUES DEBE SER FIJA.
		
			if($this->imgCheckDuplicated()==2){
			
				$this->imgDir=opendir($this->imgPath);
				
				
				if(strpos($this->imgName,"jpg") || strpos($this->imgName,"jpeg")){
				$this->imgCopy=imagecreatefromjpeg("".$this->imgPath.$this->imgName."");
				}else if(strpos($this->imgName,"gif")){
				$this->imgCopy=imagecreatefromgif("".$this->imgPath.$this->imgName."");
				}else $this->imgCopy=imagecreatefrompng("".$this->imgPath.$this->imgName."");
				
				$this->width=imagesx($this->imgCopy);
				$this->height=imagesy($this->imgCopy);
				
				$this->imgNewX=($this->width * ($y/$this->height));
				$this->imgNewY=$y;
				
				
				
				$this->thumb=imagecreatetruecolor($this->imgNewX,$this->imgNewY);
				
				imagecopyresized($this->thumb,$this->imgCopy,0,0,0,0,$this->imgNewX,$this->imgNewY,$this->width,$this->height);
				
				if(strpos($this->imgType,"gif")){
						imagegif($this->thumb, $this->thumbPath.$this->imgName);
				
				}else if(strpos($this->imgName,"jpg") || strpos($this->imgName,"jpeg")){
						imagejpeg($this->thumb,"".$this->thumbPath.$this->imgName."");
				
				}else imagepng($this->thumb, $this->thumbPath.$this->imgName);
				
				closedir($this->imgDir);
			}
		
		}
		
		
	
	
	
		

	
	
	
	}//FIN DE CLASE

El codigo para realizar de momento la subida del archivo y generar el thumb seria algo tal que asi(aun me gustaria poder esclarecerlo mas pero poco a poco jeje).

Código:
include ("imageClass.php");

$img=new image;

$img->setImg();
if($img->imgCheck()){
	if($img->imgCheckDuplicated()!=2){
$img->imgUpload();
}else echo "el nombre de archivo ya esta ocupado";
}

$img->imgLoadToResize(150);

Como veis ha cambiado basicamente todo XDD, al principio tenia algo "similar" pero como no me funcionaba, me lo fui cargando hasta el resultado de arriba por desesperacion XD .

Dejo colgado el codigo , por si a alguien le sirve de "ayuda" ya que siempre me ayudais y quiero poder empezar a aportar yo cosas