/** * 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); } }