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?