As interfaces Iterator, ArrayAccess e Countable do PHP

Resumo:

Interface é um recurso das linguagens de programação orientadas a objetos que propicia algumas vantagens ao polimorfismo. PHP oferece algumas interfaces que, caso sejam implementadas em uma classe, resultam em comportamentos especiais. Algumas destas interfaces são: Iterator, ArrayAccess e Countable.

Array com tamanho fixo no PHP (SplFixedArray)

Resumo:

PHP oferece nativamente o tipo array, que possui bastante flexibilidade. As principais características do array de PHP é que ele permite índices inteiros ou alfanuméricos, e é auto-redimensionável, ou seja, cresce ou diminui conforme elementos são adicionados ou removidos.

Quem já trabalhou com linguagens mais baixo nível, como C ou C++, deve saber que manter o controle sobre um array auto-redimensionável implica em perda de performance em função da realocação de memória. Para prover uma solução mais restrita e mais rápida para PHP, foi criada a classe SplFixedArray, disponível a partir da versão 5.3 de PHP. Ela só aceita inteiros como índices (de zero até o tamanho menos um) e tem tamanho fixo (definido na criação do objeto), embora possa ser redimensionado a qualquer momento. Quanto menos redimensionamento é feito, mais ela tende a ser mais rápida que um array convencional.

var_dump para classes e objetos do PHP

Resumo:

As funções var_dump, print_r e debug_zval_dump são úteis para destrinchar o conteúdo de uma variável em PHP, independente de seu tipo.

Porém, elas não mostram, por exemplo, os métodos de um objeto. Uma forma simples de se obter esta informação é utilizando o método export da classe Reflection.

Percorrer Diretórios e Arquivos com PHP

Resumo:
Busca em Diretório

Percorrer diretórios e arquivos em PHP é muito simples. Vamos ver 5 formas para se fazer isso, cada uma com suas características e limitações:

Aritmética de Datas com PHP

Resumo:
Introdução
Calendário

Aritmética de datas é o processo de realizar contas utilizando datas e intervalos de tempo.

O fator mais complicante nestes tipos de operações é que data não é algo tão exato quanto se imagina. Tudo por conta que a Terra leva 365,2422 dias para completar uma volta inteira no Sol. Para entender com detalhes, leia esta explicação.

Controle de Erros em PHP

Resumo:

Tratamento de erros é a estratégia usada para capturar a ocorrência de uma situação que impede o sucesso de uma operação do sistema. Isso pode se dar em diferentes níveis. Em baixo nível: uma função pode receber um parâmetro inesperado. Em alto nível, uma ferramenta pode não aceitar determinada sequência de ações do usuário.

Conhecendo o PDO do PHP

Resumo:

O que é PDO?

PDO (PHP Data Objects) é um módulo de PHP montado sob o paradigma Orientado a Objetos e cujo objetivo é prover uma padronização da forma com que PHP se comunica com um banco de dados relacional. Este módulo surgiu a partir da versão 5 de PHP. PDO, portanto, é uma interface que define um conjunto de classes e a assinatura dos métodos de comunicação com uma base de dados.

Cada sistema gerenciador de bancos de dados (SGBD) pode prover um driver para PDO. Apesar de PDO definir a assinatura dos métodos que cada driver deve implementar, alguns recursos podem não ser suportados. Logo, a chamada a um método pode ser "inútil" dependendo do driver utilizado ou da versão/modelo do servidor de Banco de Dados. Por exemplo, algumas engines do SGBD MySQL não dão suporte a transações, logo, o método "beginTransaction" (responsável por iniciar uma transação) simplesmente não terá efeito sob tais condições.

SELF no PHP

Resumo:
Você sabia?

Outro dia descobri algo bastante básico, mas que não havia encontrado na documentação do PHP. Trata-se de algumas das utilizações da palavra reservada "self".

ORM (como pode ser feito)

Resumo:

Ontem escrevi sobre ORM, mas apenas apresentei o conceito. Hoje vamos ver o que se espera de uma camada ORM e algumas dicas de como implementá-la.

Uma das coisas que se espera de uma camada ORM é que ela não gere retrabalho. Um tipo de retrabalho comum em aplicações tradicionais é: criar a estrutura do banco de dados e, depois, precisar criar classes que referenciam as tabelas. Como foi apresentado ontem, existe muita semelhança entre a estrutura do BD e as classes que utilizam o conceito de ORM (chamo estas classes de "classes entidades" ou, simplesmente, "entidades", por se tratarem de classes com características especiais).

Já que os atributos da classe serão semelhantes às colunas da tabela, pra que especificá-las duas vezes? E se precisar mudar em um lugar, ter que mudar no outro. A solução é que sua camada ORM seja capaz de realizar a chamada "reflexão" em um dos lados e aplicar as regras do outro (vou explicar).

Object Relational Mapping

Resumo:

Bom, para meu primeiro post efetivo sobre tecnologia, resolvi escrever sobre algo bastante alto nível e, de repente, pouco conhecido entre programadores PHP: ORM. Pretendo, inicialmente, mostrar o conceito e, em posts futuros, talvez aprofundar em mais detalhes.