Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO (Consulta) Propiedad tipo array y recorrerlo

Estas en el tema de (Consulta) Propiedad tipo array y recorrerlo en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos. Declare una propiedad como array: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original var $tipo = array ( 'jpg' , 'gif' , 'png' ) ...
  #1 (permalink)  
Antiguo 26/09/2011, 19:29
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 9 meses
Puntos: 21
(Consulta) Propiedad tipo array y recorrerlo

Hola a todos.

Declare una propiedad como array:

Código PHP:
Ver original
  1. var $tipo = array('jpg', 'gif', 'png');


y los metodos:
Código PHP:
Ver original
  1. // Obtengo la extension del archivo.
  2.     private function extension($file) {
  3.        
  4.         $this->ext .= substr(strrchr($file, '.'), 1);
  5.        
  6.         return $this->ext;
  7.     }
  8.    
  9.     // Compruebo qye el archivo tiene una extension permitida.
  10.     function comprobar($file) {
  11.        
  12.         foreach ($this->allows as $allow) {
  13.             $this->extension .= $allow;
  14.         }
  15.            
  16.         if ($this->extension == $this->extension($file)) {
  17.                 return  $this->correcto;
  18.             }
  19.             else {
  20.                 return $this->error;
  21.             }      
  22.     }

Cuando hago el foreach, solo me devuelve el primer valor del arreglo.
A que se debe este comportamiento? Debo corregir el acceso de las propiedades y/o metodos? ¿O cual es el error que estoy cometiendo?

Saludos.
__________________
_
  #2 (permalink)  
Antiguo 26/09/2011, 19:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: (Consulta) Propiedad tipo array y recorrerlo

Haz un print_r a la variable $this->allows y mira lo que tiene.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 27/09/2011, 05:30
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: (Consulta) Propiedad tipo array y recorrerlo

No debería ser $this->tipo en vez de $this->allows ?
__________________
>> Eleazan's Source
>> @Eleazan
  #4 (permalink)  
Antiguo 27/09/2011, 05:35
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 9 meses
Puntos: 21
Respuesta: (Consulta) Propiedad tipo array y recorrerlo

Cita:
Iniciado por abimaelrc Ver Mensaje
Haz un print_r a la variable $this->allows y mira lo que tiene.
Me trae el array...


Cita:
No debería ser $this->tipo en vez de $this->allows ?
Si, me equivoque cdo lo publique en el foro. Es lo mismo.
__________________
_
  #5 (permalink)  
Antiguo 27/09/2011, 05:40
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: (Consulta) Propiedad tipo array y recorrerlo

De todas formas no entiendo una cosa (un par, pero bueno...)

Cuando haces
Código PHP:
foreach ($this->allows as $allow) {
            
$this->extension .= $allow;
        } 
Estás guardando todas las... ¿extensiones permitidas? en un string.. q sería algo así 'jpgpnggif' por ejemplo...

Y luego haces
Código PHP:
if ($this->extension == $this->extension($file)) {
                return  
$this->correcto;
            } 
Que serñia algo así como
if( 'jpgpnggif' == 'jpg')

Nunca sería "true" si tienes puesta más de una extensión. ¿No?
__________________
>> Eleazan's Source
>> @Eleazan
  #6 (permalink)  
Antiguo 27/09/2011, 06:47
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 9 meses
Puntos: 21
Respuesta: (Consulta) Propiedad tipo array y recorrerlo

Verdad, estoy revisando lo que tu dices....

Creo que lo que hay que hacer es buscar dentro de ese array y comparar cada valor y cuando lo encuentra salir del bucle...

Estoy intentando esto, pero creo que estoy con el mismo problema...

Código PHP:
Ver original
  1. function comprobar($file) {
  2.        
  3.         $this->extension = false;
  4.         foreach ($this->allows as $allow) {
  5.            
  6.             if ($allow == $this->extension($file)) {
  7.                 $this->extension = true;
  8.                 break;
  9.             }      
  10.         }
  11.             return $this->extension;
  12.     }
__________________
_
  #7 (permalink)  
Antiguo 27/09/2011, 07:25
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: (Consulta) Propiedad tipo array y recorrerlo

Bueno, yo he probado esto:
Código PHP:
class Test {
    private 
$allows = array('jpg','png','gif');
    
    
    
    private function 
extension($file) {
       
        return 
substr(strrchr($file'.'), 1);
       
        
    }
    
    public function 
comprobar($file) {
           
$extension_a_comprobar $this->extension($file); //Pq voy a buscar la extension 300 veces? ;)
            
$result false;
            foreach (
$this->allows as $allow) {
               
                if (
$allow == $extension_a_comprobar) {
                    
//Sí q está permitida
                    
$result true;
                }      
            }
                return 
$result;
        }
}

$test = new Test;
if(
$test->comprobar('test.jpg')) echo 'test.jpg aceptado';
if(
$test->comprobar('test.jpeg')) echo 'test.jpeg aceptado'
Y me funciona bien así ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #8 (permalink)  
Antiguo 27/09/2011, 07:49
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 9 meses
Puntos: 21
Respuesta: (Consulta) Propiedad tipo array y recorrerlo

Ahora di con esta soluciòn:

Código PHP:
Ver original
  1. if (in_array($this->extension($file), $this->allows)) {
  2.             return $this->correcto;
  3.         } else {
  4.             return $this->error;
  5.         }
__________________
_
  #9 (permalink)  
Antiguo 27/09/2011, 08:22
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años, 1 mes
Puntos: 69
Respuesta: (Consulta) Propiedad tipo array y recorrerlo

Chicos, están complicando el método... es más simple.
Solamente hagan:
Código PHP:
public function comprobar($file)
{
    
$ext $this->extension($file);
    return 
in_array($ext$this->allows);

__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com

Etiquetas: propiedad, tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:20.