Dev (Back & Front)ARTIGO

Standard PHP Library – Parte 02

No artigo anterior escrito sobre a SPL, fiquei por publicar outros artigos sobre o assunto. Infelizmente não consigo manter a regularidade de publicação que gostaria, mas farei na medida do possível.

A partir da versão 5 do PHP, a SPL já vem importada nativamente, o que facilita a utilização dos recursos que ela oferece. Desde então, os desenvolvedores do PHP vêm trabalhando pesado para melhorar o suporte a orientação a objetos. É claro que até lá ainda há um longo caminho a percorrer e isso requer um grande esforço de toda comunidade.

A SPL trará beneficios, tornando a linguagem mais madura, robusta, sem perder a simplicidade que a tornou tão popular. Há também os lados negativos, como por exemplo, a incompatibilidade de scripts desenvolvidos para versões anteriores, mas acredito que o “prejuizo” seja por uma boa causa. Já está na hora de resolvermos problemas de inconsistência na padronização da nomeclatura das funções das bibliotecas nativas da linguagem (algumas utilizam o separador undescore como str_replace e outras não, como strlen), o que provoca em perda de produtividade.

A SPL veio com o objetivo de prover funcionalidades básicas, organizadas através de classes e interfaces, que evitam que o programador precise reinventar a roda e permitindo que ele possa focar suas atenções para a solução dos reais problemas. Nada pior do que perder horas para resolver problemas que foram criados pela própria linguagem.

A seguir demonstrarei como utilizar as classes de manipulação de arquivos SplFileInfo e SplFileObject.

SplFileInfo

Esta classe fornece todas as informações disponíveis para um determinado arquivo, passado como parâmento na instanciação do objeto.

<code>&lt; ?
file = new SplFileInfo("./meu_arquivo.txt");
?&gt;</code>

A partir daí, o objeto fornece os seguintes métodos:

  • getATime(): Data em timestamp do último acesso ao arquivo.
  • getCTime(): Data em timestamp da criação do arquivo.
  • getGroup(): Retorna o group do arquivo (disponível apenas em sistemas unix).
  • getInode(): Retorna o inode do arquivo (disponível apenas em sistemas unix).
  • getMTime(): Data em timestamp da última modificação do arquivo.
  • getPath(): Retorna o diretório no qual o arquivo está contido.
  • getPerms(): Retorna as permissões do arquivo.
  • getRealPath(): Retorna o caminho completo até o arquivo.
  • getSize(): Retorna o tamanho do arquivo em bytes.
  • isDir(): Retorna um valor booleano informando se o arquivo é do tipo diretório
  • isExecutable(): Retorna um valor booleando informando se o arquivo é um executável válido.
  • isFile(): Retorna um valor booleando informando se o arquivo é mesmo um arquivo, e não um diretório ou um link.
  • isLink(): Retorna um valor booleando informando se o arquivo é um link para outro arquivo ou diretório.
  • isReadable(): Retorna um valor booleando informando se o arquivo pode ser lido ou não.
  • isWritable(): Retorna um valor booleando informando se o arquivo pode ser alterado ou não.
  • openFile(): retorna um objeto do tipo SplFileObject, que será apresentado abaixo.

Estas funções fornecem os principais dados que podemos obter dos arquivos, e com certeza pode resolver muitos problemas. Principalmente as funções getMTime(), isWritable() e getSize() são comumente utilizadas no nosso dia-a-dia.

SplFileObject

Esta classe herda a classe SplFileInfo. Logo, ela possui todos os métodos que a classe explicada acima possui, porém implementa também a manipulação do conteúdo do arquivo.

<code>&lt; ?
file = new SplFileObject("./meu_arquivo.txt");
?&gt;</code>

Colocarei apenas os métodos mais importantes a seguir:

  • eof(): Retorna um valor booleando indicando se o ponteiro está no fim do arquivo.
  • fflush(): Força a escrita em disco do buffer do arquivo.
  • fgetc(): Retorna uma string contendo apenas um caracter lido do arquivo.
  • fgets(): Retorna uma linha do arquivo.
  • fscanf(format): Interpreta a leitura de um arquivo de acordo com o formato passado como parâmetro.
  • fseek(pos): Move o ponteiro do arquivo.
  • fstat(): Retorna um vetor com detalhes do arquivo.
  • ftell(): Retorna um inteiro com posição do ponteiro no arquivo.
  • ftruncate(size): Reduz o tamanho do arquivo ao tamanho especificado.
  • fwrite(string): Escreve o conteúdo da string no arquivo.
  • rewind(): Volta o ponteiro para o inicio do arquivo.
  • seek(line): Muda o ponteiro para linha especificada.

Estas funções são basicamente as funções oferecidas pela biblioteca atual do PHP, organizadas em objetos e permite a iteração, já que esta classe também estende a interface Iterator. É importante relembrar também que estes métodos são nativos e tão eficientes quanto as funções já existentes.

Vale a pena dar uma conferida nas ferramentas oferecias pela SPL na sua oculta documentação.

trabalha com internet desde 2001 e é graduado em Ciência da Computação pela UFES. Foi gerente de tecnologia do iMasters por 7 anos e responsável pelo desenvolvimento do Portal iMasters. Fundador da <a href="http://conceptho.com">Conceptho</a>, empresa especializada em serviços web, onde é responsável pelo projeto <a href="https://rockpigeon.com.br">RockPigeon</a>. Palestrante, articulista e consultor sobre infra-estrutura cloud e desenvolvimento web.

Ver perfil