Calsse eveFile: manipulação de arquivos

Publicado por EVERTON DA ROSA 27/12/2007

[ Hits: 6.399 ]

Homepage: http://everton3x.github.io

Download eveFile-1.1.zip




A classe eveFile fornece diversas funções para manipular arquivos e diretórios.

Desta forma, consolida todas as funções do PHP com uma única sintaxe.

  



Esconder código-fonte

<?

/*
eveQuery: Classe para interação com banco de dados

-----------------------------------------------------

Desenvolvido por Everton da Rosa.
Licença GNU (www.gnu.org).

-----------------------------------------------------

eveFile é uma classe PHP para manipulação de arquivos.
Versão 1.1 (19 de novembro de 2007)

Funções: criar, salvar uploads, deletar, mover, copiar, renomear, pegar informações, abrir, fechar

Futuro: informações do diretório

Para detalhes e ajuda complementar, consulte http://www.php.net/manual/pt_BR/index.php (manual em português do PHP)
Tópicos recomendados:
- Classes e Objetos (PHP 5): http://www.php.net/manual/pt_BR/language.oop5.php
- Variáveis: http://www.php.net/manual/pt_BR/language.variables.php
- Funções do FileSystem: http://www.php.net/manual/pt_BR/ref.filesystem.php

Caso faça correções, melhorias ou modificações, favor contatar o desenvolvedor através do e-mail [email protected] enviando o código para atualização da classe nos sites onde ela se encontra hospedada.

Para exemplo de uso, veja o arquivo eveFile.samples.php

Ao utilizar esta classe, por favor indique seu autor da seguinte forma:
-----------------------------------------------------
eveFile: Classe para manipulação de arquivos

Desenvolvido por Everton da Rosa ([email protected]).
Licença GNU (www.gnu.org).
-----------------------------------------------------

Ao utilizar código baseado nesta classe, por favor referencie da seguinte forma:
-----------------------------------------------------
Baseado na classe eveFile: Classe para manipulação de arquivos, desenvolvida por Everton da Rosa ([email protected]) sob licença GNU (www.gnu.org).
-----------------------------------------------------

*/

class eveFile{ //Classe para manipulação de arquivos
   
   public $param = array(
      'dir' => 'C:\Documents and Settings\Everton\Desktop\\', //diretório padrão da classe
      'save_dir' => 'C:\Documents and Settings\Everton\Desktop\\' //diretório padrão para salvar arquivos
   );
   
   function save($d=false){ //salva no destino um arquivo carregado por upload. $d é o diretório de destino terminado com \
      $f = key($_FILES);
      if($f){
         if(!$d){
            $d = realpath($param['save_dir']);
         }
         
         if(!is_dir($d)){
            exit('O destino não é um diretório!');
         }
         
         $m = @move_uploaded_file($_FILES[$f]['tmp_name'],$d.$_FILES[$f]['name']);
         if(!$m){
            exit(E_ALL);
         }else{
            return true;
         }
      }
   }
   
   function getName($path=false){ //retorna o nome do arquivo. $path deve conter o caminho completo, incluisve o nome do arquivo ex.: c:\teste.txt
      if(!is_file($path)){
         exit('O caminho informado não é um arquivo!');
      }
      
      if($path){
         $path = $realpath($path);
         $name = @basename($path);
         return $name;
      }else{
         exit('Nenhum caminho foi definido!');
      }
   }
   
   function getPath($path=false){ //retorna o caminho do arquivo. $path deve conter o caminho completo, incluisve o nome do arquivo ex.: c:\teste.txt
      if(!is_file($path)){
         exit('O caminho informado não é um arquivo!');
      }
      
      if($path){
         $path = realpath($path);
         $dir = @dirname($path);
         return $dir;
      }else{
         exit('Nenhum caminho foi definido!');
      }
   }
   
   function parse($size=false){ //retorna o tamanho de n bytes em Kb, Mb, Gb, etc.
      if(!size){
         exit('Nenhum tamanho foi passado!');
      }
            
      if($size<=1024){
         $parsed = array(
            'size' => $size,
            'unid' => 'Byte'
         );
      }else{
         $size = $size/1024;
         if($size < 1024){
            $parsed = array(
               'size' => $size,
               'unid' => 'Kbyte'
            );
         }else{
            $size = $size/1024;
            if($size < 1024){
               $parsed = array(
                  'size' => $size,
                  'unid' => 'Mbyte'
               );
            }else{
               $size = $size/1024;
               if($size < 1024){
                  $parsed = array(
                     'size' => $size,
                     'unid' => 'Gbyte'
                  );
               }else{
                  $parsed = array(
                     'size' => $size,
                     'unid' => 'Gbyte'
                  );
               }
            }
         }
      }
      
      return $parsed;
   }
   
   function free($path=false){ //exibe o espaço disponível no diretório/disco
      if(!$path){
         $path = realpath($param['dir']);
      }
      
      if(!is_dir($path)){
         exit('O caminho informado não é um diretório!');
      }
      
      $free = @disk_free_space($path);
      
      $parsed = $this->parse($free);
      
      return $parsed;
   }
   
   function sizeDir($path=false){ //exibe o tamanho total do diretório/disco
      if(!$path){
         $path = realpath($param['dir']);
      }
      
      if(!is_dir($path)){
         exit('O caminho informado não é um diretório!');
      }
      
      $free = @disk_total_space($path);
      
      $parsed = $this->parse($free);
      
      return $parsed;
   }
   
   function fm($option=false,$conf=false){ //função para manipulação de arquivos
      if(!$option){
         exit('Nenhuma opção de manipulação foi informada!');
      }
      
      if($option == 'copy'){ //copia o arquivo
         if(!$conf['from']){
            exit('Origem não definida!');
         }else{
            $o = realpath($conf['from']);
         }
         
         if(!$conf['to']){
            exit('Destino não definido!');
         }else{
            $d = realpath($conf['to']);
         }
         
         if(!is_file($o)){
            exit("A origem $o não é um arquivo válido!");
         }
         
         $c = @copy($o,$d);
         
         return $c;
      }elseif($option == 'move'){ //move um arquivo
         if(!$conf['from']){
            exit('Origem não definida!');
         }else{
            $o = realpath($conf['from']);
         }
         
         if(!$conf['to']){
            exit('Destino não definido!');
         }else{
            $d = realpath($conf['to']);
         }
         
         if(!is_file($o)){
            exit("A origem $o não é um arquivo válido!");
         }
         
         $m = @rename($o,$d);
         
         return $m;
      }elseif($option == 'delete' || $option == 'del'){
         
         if(!$conf['file']){
            exit('Arquivo não definido!');
         }else{
            $f = realpath($conf['file']);
         }
         
         if(!is_file($f)){
            exit("O arquivo $f não é um arquivo válido!");
         }
         
         $d = @unlink($f);
         
         return $d;
      }elseif($option == 'rename'){ //renomeia um arquivo
         if(!$conf['from']){
            exit('Origem não definida!');
         }else{
            $o = realpath($conf['from']);
         }
         
         if(!$conf['to']){
            exit('Destino não definido!');
         }else{
            $d = realpath($conf['to']);
         }
         
         if(!is_file($o)){
            exit("A origem $o não é um arquivo válido!");
         }
         
         if(dirname($o) != dirname($d)){
            exit('Você não pode renomear um arquivo para diretórios diferentes! Para mover, utilize a opção "move".');
         }
         
         $r = @rename($o,$d);
         
         return $r;
      }elseif($option == 'open'){// abre um arquivo
         if(!$conf['file']){
            exit('Nenhum arquivo informado!');
         }else{
            $file = realpath($conf['file']);
         }
         
         if(!$conf['mode']){
            $mode = 'rt';
         }else{
            $mode = $conf['mode'];
         }
         
         if(!is_file($file)){
            exit("O arquivo $file não é um arquivo válido!");
         }
         
         $f = @fopen($file,$mode);
         
         return $f;
      }elseif($option == 'close'){ //fecha um arquivo
         if(!$conf['file']){
            exit('Nenhum arquivo informado!');
         }else{
            $file = $conf['file'];
         }
         
         $f = @fclose($file);
         return $f;
      }elseif($option == 'info'){ //retorna um array con informações do arquivo
         if(!$conf['file']){
            exit('Nenhum arquivo informado!');
         }else{
            $file = realpath($conf['file']);
         }
         
         if(!is_file($file)){
            exit("O arquivo $file não é um arquivo válido!");
         }
         
         $a['name'] = $this->getName($file);
         $a['dir'] = $this->getDir($file);
         $a['last_access'] = @fileatime($file);
         $a['last_modify'] = @filectime($file);
         $a['group'] = @filegroup($file);
         $a['owner'] = @fileowner($file);
         $a['perms'] = @fileperms($file);
         $a['size'] = @filesize($file);
         $a['type'] = @filetype($file);
         $a['exec'] = @is_executable($file);
         $a['readable'] = @is_readable($file);
         $a['writable'] = @is_writable($file);
         
         return $a;
      }elseif($option == 'read'){ //lê o conteúdo do arquivo para um array
         if(!$conf['file']){
            exit('Nenhum arquivo definido!');
         }else{
            $file = realpath($conf['file']);
         }
         
         if(!is_file($file)){
            exit("O arquivo $file não é um arquivo válido!");
         }
         
         $array = @file($file);
         
         return $array;
      }else{
         exit("Opção $option desconhecida!");
      }
   }
   
   function dm($option=false,$conf=false){ //funções de gerenciamneto de diretórios
      if(!option){
         exit('Nenhuma opção informada!');
      }
      
      if($option == 'new' || $option == 'create'){ //cria um diretório
         if(!$config['dir']){
            exit('Nenhum diretório informado!');
         }else{
            $dir = realpath($config['dir']);
         }
         
         $d = @mkdir($dir);
         
         return $d;
      }elseif($option == 'delete' || $option == 'del'){ //remove o diretório
         if(!$config['dir']){
            exit('Nenhum diretório informado!');
         }else{
            $dir = realpath($config['dir']);
         }
         
         if(!is_dir($dir)){
            exit("O diretório $dir não é um diretório válido!");
         }
         
         $d = @rmdir($dir);
         
         return $d;
      }elseif($option == 'copy'){ //copia o diretório
         if(!$conf['from']){
            exit('Origem não definida!');
         }else{
            $o = realpath($conf['from']);
         }
         
         if(!$conf['to']){
            exit('Destino não definido!');
         }else{
            $d = realpath($conf['to']);
         }
         
         if(!is_dir($o)){
            exit("A origem $o não é um diretório válido!");
         }
         
         $c = @copy($o,$d);
         
         return $c;
      }elseif($option == 'move'){ //move o diretório
         if(!$conf['from']){
            exit('Origem não definida!');
         }else{
            $o = realpath($conf['from']);
         }
         
         if(!$conf['to']){
            exit('Destino não definido!');
         }else{
            $d = realpath($conf['to']);
         }
         
         if(!is_dir($o)){
            exit("A origem $o não é um diretório válido!");
         }
         
         $m = @rename($o,$d);
         
         return $m;
      }elseif($option == 'rename'){ //renomeia o diretório
         if(!$conf['from']){
            exit('Origem não definida!');
         }else{
            $o = realpath($conf['from']);
         }
         
         if(!$conf['to']){
            exit('Destino não definido!');
         }else{
            $d = realpath($conf['to']);
         }
         
         if(!is_file($o)){
            exit("A origem $o não é um diretório válido!");
         }
         
         $r = @rename($o,$d);
         
         return $r;
      }else{
         exit("A opção $option é desconhecida!");
      }
   }
}

?>

Scripts recomendados

Mapeamento dinâmico de dados em PHP

Consulta Yahoo! Buscas na Web

Redimensionador de fotos em PHP

phpEasyInstaller

Calendário com Tabela


  

Comentários
[1] Comentário enviado por gedalinux em 29/12/2007 - 09:44h

Este talvez venha a ser o único comentário sobre esta classe, por que eu me interesso sobre o problema dos outros.
Meu caro se o assunto era OOP com PHP 5 você definitivamente não deveria ter escrito uma classe como essa e disponibilizado para a comunidade.
A classe simplesmente não tem sentido em OOP, atributos devem ser private, sempre que possivel, para evitar a quebra de encapsulamento. O nome dos metodos nao seguem padrões convencionais e ainda tem erros de sintaxe que podem ser corrigidos, claro.
Baixa coesão, manipula diretórios e arquivos igualmente, simplesmente não recomendo o uso, sem antes refatorá-la.


Contribuir com comentário