/**
  * Define os dados todos os arquivos os arquivos enviados ao
  * atributo $this->files, percorrendo os indices de $_FILES e
  * retirando oque não é necessário.
  *
  * @return void
  */
 private function setFiles()
 {
     // Caso nenhum arquivo tenha sido enviado
     if (empty($_FILES)) {
         return;
     }
     // função não primitiva do PHP, deve-se ser implementada.
     array_last_branches($_FILES, $branches);
     $this->files['name'] = $branches[0];
     $this->files['type'] = $branches[1];
     $this->files['tmp_name'] = $branches[2];
     $this->files['error'] = $branches[3];
     // o tamanho do arquivo primitivo vem em KB, aqui o convertemos para MB
     $this->files['size'] = array_map(function ($value) {
         return round($value / 1024 / 1024, 2);
     }, $branches[4]);
     // Percorrenco arquivos para definir alguns valores básicos,
     // tais como extensão, nome e caminho que será salvo;
     foreach ($this->files['name'] as $key => $value) {
         $value = explode('.', $value);
         // caso não seja encontrada um extesão regular será atribuido null.
         $this->files['extension'][$key] = count($value) == 1 ? null : $value[count($value) - 1];
         // Definindo hash que representará o nome dos arquivos salvos em disco
         $this->files['hash'][$key] = $this->getHash();
         // definindo caminho que o arquivo será salvo.
         $this->files['path'][$key] = $this->saveIn . $this->files['hash'][$key] . '.' . $this->files['extension'][$key];
     }
     // Definindo o total de arquivos
     $this->total = @count($this->files['tmp_name']);
 }
/**
 * Captura todos os últimos galhos de um Array 
 * independente de quantos sub-galhos o mesmo tenha.
 * 
 * @param array $array que será capturado os últimos galhos
 * @param array $match recipiente para os últimos galhos
 * @param int $cb número do galho atual
 */
function array_last_branches(array $array, &$match, $cb = 0)
{
    foreach ($array as $key => $value) {
        is_array($value) ? array_last_branches($value, $match, $cb++) : ($match[$cb][] = $value);
    }
}