Namespaces e Resolução de nomes de Classes

Resumo:
Introdução

Recentemente, assisti ao PHPCast episódio 8 e confesso que fiquei um pouco surpreso ao notar que um recurso bem simples introduzido no PHP 5.5 não foi compreendido plenamente por todos participantes. Trata-se de uma nova sintaxe da linguagem que permite a obtenção do nome qualificado de classes. Então, vou mostrar com mais detalhes este novo recurso que, certamente, também deve ser dúvida de muitos programadores.

Framework YAF PHP

Resumo:
Introdução

YAF-PHP (Yet Another Framework) é um framework para desenvolvimento de aplicações Web em PHP, criado em 2011 pelo "Laruence" (um dos membros da equipe de desenvolvimento da linguagem PHP). Porém, ele possui um grande diferencial em relação aos milhares de frameworks disponíveis para PHP: ele é disponibilizado na forma de extensão do PHP. Neste artigo vamos conhecer um pouco deste framework, apontando suas vantagens e desvantagens.

MVC: a essência e a web

Resumo:
Introdução

MVC é o acrônimo para "Model View Controller" (Modelo Visão Controlador), uma importante e conhecida estratégia para implementação de sistemas computacionais baseada na separação de responsabilidades. Ele foi criado por Trygve Reenskaug, no final dos anos 70 e foi amplamente utilizado até os dias de hoje, com diversas adaptações. Atualmente, boa parte dos frameworks PHP são estruturados para utilizar MVC ou pelo menos dar suporte para este padrão. Na verdade, muitos dizem ser MVC, mas, na verdade, usam uma variação do mesmo.

Embora a utilização básica seja muito simples de entender, sempre tive vários questionamentos durante a utilização prática deste padrão. Lendo um pouco de sua essência e sobre algumas de suas variações, algumas coisas ficaram ainda mais confusas e, realmente, não entendo porque alguns frameworks Web tomaram um certo rumo e não outro. Resumindo: não acho que o MVC seja a melhor estratégia para o ambiente web.

Neste artigo, vou compartilhar um pouco deste meu estudo, apresentar algumas referências sobre o assunto e alguns pontos de vistas pessoais. Espero que você, leitor(a), também possa expressar seus pontos de vista nos comentários para trocarmos experiências.

Utilizando as exceptions da SPL do PHP

Resumo:
Introdução

No artigo Try Catch Finally, vimos sobre o conceito de exceptions e seu funcionamento no PHP (onde/como são emitidas e onde/como são capturadas). Neste artigo, veremos sobre a correta utilização das exceptions definidas pela extensão SPL, então, se você ainda não conhece bem o conceito, recomendo a leitura daquele outro post antes de continuar.

Infelizmente, a documentação destas exceptions não deixa muito claro os possíveis pontos em qua cada uma pode ser usada. Portanto, as recomendações que faço são com base naquilo que compreendi da documentação.

Try Catch Finally em PHP

Resumo:
Introdução

Dando continuidade aos artigos relacionados às novidades do PHP 5.5, este artigo irá abordar sobre o suporte ao bloco "finally" nas estruturas try/catch/finally do PHP.

Porém, antes de apresentar o novo recurso ("finally"), vou contextualizar o assunto de Exceptions para os leitores que ainda não o conhecem.

Traits no PHP 5.4

Resumo:
Introdução

O PHP 5.4 já está disponível desde março/2012 e uma de suas grandes novidades em relação à Programação Orientada a Objetos foi a introdução de um novo recurso chamado "Traits". Neste artigo veremos o que é uma trait, para que ela serve e como usá-la.

PHPClasses

O site PHPClasses (www.phpclasses.org) é um grande repositório de classes PHP, que recebe contribuições da comunidade de desenvolvedores da linguagem PHP, de forma voluntária. Ele também oferece vários recursos de redes sociais, como fóruns de discussão, etc.

Se você procura algum recurso muito específico para PHP, pode ser que encontre algo pronto por lá. Atualmente há mais de 6.000 classes aprovadas.

Já escrevi algumas classes e mandei para lá: Classes do Rubens no PHPClasses. Inclusive, duas delas ficaram entre as premeadas por inovação do mês (Innovation Award of Month), com direito a escolha de brinde. Hoje também descobri que uma delas (a Unicode Manipulation) está em segundo lugar no ranking geral de classes mais bem qualificadas do PHPClasses (elas recebem pontuação por utilidade, consistência, documentação, exemplos, testes e vídeos).

Singleton versus Static

Resumo:
Introdução

Muita gente conhece o padrão Singleton. O conceito é muito simples: é um design utilizado para garantir que uma determinada classe possua uma única instância em toda a aplicação. Para isso, uma única instância é criada pela classe e sempre a mesma instância é retornada para uso. Porém, em algumas situações, é possível que uma classe agrupe métodos e atributos estáticos, como se uma única "instância" fosse manipulada. Neste post vou analisar as diferenças sobre o padrão Singleton e uma classe com métodos e atributos estáticos.

Lendo Arquivos CSV via SplFileObject do PHP

Resumo:

Navegando pelo manual do PHP, encontrei a classe SplFileObject, que permite a manipulação de arquivos através de uma proposta orientada a objetos. Ela extende a classe SplFileInfo, que serve para obter informações sobre o arquivo.

Além dos métodos básicos, que inclusive tem nomes semelhantes aos das funções de mesmo propósito (paradigma procedural), vi que ela oferece uma forma de leitura de arquivos CSV através de um iterador.

Manipulando arquivos ZIP pelo PHP

Resumo:
zip
Introdução

Existem situações em sistemas de informação Web onde é necessário o envio de um arquivo muito grande ou então vários arquivos de uma vez para o cliente. Talvez uma imagem, talvez um pacote de relatórios, ou simplesmente conjuntos de arquivos. Este artigo mostra como utilizar a extensão Zip do PHP para criar um pacote ZIP (ou ler um pacote existente) e realizar operações sobre ele, tais como incluir arquivos/diretórios para serem compactados, extrair o conteúdo, enviar o pacote para o cliente, etc.

SimpleXML para manipular XML pelo PHP

Resumo:
Introdução

SimpleXML é uma extensão do PHP que permite ler e manipular XML de maneira bastante simples, embora com várias restrições. A principal restrição é que um elemento (tag) só pode conter texto ou outros elementos, nunca texto junto com outros elementos, como ocorre no HTML.

Transformação de Dados

Resumo:

Ao desenvolver uma grande aplicação ou um framework Web, é preciso ter consciência de que precisará trabalhar com camadas e que fará várias conversões entre estas camadas para manter o sistema portável. Vamos observar a imagem abaixo:

Conversão de dados entre camadas do sistema

Apesar de ser possível utilizar a mesma notação para representar números reais no formulário, na aplicação e no BD, pode ser que o usuário esteja em uma localidade que usa uma notação diferente da americana (usada no PHP), e pode ser que o BD não utilize a mesma notação que a aplicação para todos tipos de dados. Portanto, é importante realizar a transformação de dados entre as camadas do sistema.

Judy Arrays do PHP

Resumo:
Introdução

Judy Array é uma extensão Pecl (código em C que possui interface para utilização em PHP) que implementa arrays associativos com os benefícios de escalabilidade, alta performance e eficiência no uso de memória.

Otimização de métodos que retornam arrays em PHP

Resumo:
performance

Existem métodos que servem apenas para retornar arrays. Em alguns casos, estes arrays são muito grandes e ocupam muito espaço no próprio arquivo da classe onde o método se encontra. Arquivos muito grandes acarretam em uso de memória para carregá-los. Por este motivo pode ser útil considerar uma estratégia de otimização deste array, para que ele só seja carregado caso necessário (consulta sob demanda).

Interfaces em PHP

Resumo:

"Interface", no Paradigma Orientado a Objetos, representa uma estrutura que especifica um conjunto de métodos que uma família de classes terá. Nesta especificação são informados os nomes dos métodos, visibilidade e os respectivos parâmetros, mas nenhum deles são implementados na interface. Diz-se que uma classe "implementa" uma interface quando ela possui os métodos previstos na interface e declara, explicitamente, implementá-la.

Classe DateTime do PHP sensível à localidade

Resumo:

Um dos inconvenientes da classe DateTime é que ela consegue formatar datas apenas em inglês, diferente da função strftime, que tem seu comportamento afetado pela localidade definida na função setlocale.

Para resolver este problema, criei uma classe chamada MyDateTime, que estende a classe DateTime e oferece algumas funcionalidades adicionais como os métodos:

  • alternateFormat - Para formatar uma data com o formato aceito por strftime.
  • getWeekNames - Obtém os nomes dos dias da semana.
  • getShortWeekNames - Obtém os nomes dos dias da semana abreviados.
  • getMonthNames - Obtém os nomes dos meses do ano.
  • getShortMonthNames - Obtém os nomes dos meses do ano abreviados.