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.

Alternativa para money_format do PHP

Resumo:

O script a seguir é destinado àqueles que utilizaram a função money_format no Linux e ficaram decepcionados ao notar que a função não estava disponível para Windows. Criei este script para tentar simular o comportamento da função original. Entretanto, nem todas as opções foram implementadas. Caso queira ajudar, fique a vontade, pois o código é livre e gratuito.

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.

Heredoc e Nowdoc do PHP

Resumo:

Heredoc e Nowdoc (também chamados de "here document" e "now document") são duas formas de se representar strings em PHP (assim como existe a representação usando delimitadores com aspas simples e com aspas duplas).

Construções da Linguagem PHP

Resumo:

A linguagem PHP, assim como qualquer linguagem de programação, é formada por construções da linguagem. Além das estruturas básicas de programação (estruturas condicionais, estruturas de repetição, sintaxe para criação de classes, sintaxe para criação de funções, etc.), a linguagem possui algumas funções "built-in", ou seja, funções embutidas no núcleo da linguagem.

Cuidados com o Modelo Entidade-Relacionamento

Resumo:

Modelo Entidade-Relacionamento é a conhecida modelagem da base de dados com suas entidades, atributos e relacionamentos.

A princípio, parece um modelo bastante simples de se fazer quando nos concentramos na realidade. Ou seja, se os atributos de cada entidade e os relacionamentos das entidades são realmente condizentes com a realidade em qualquer circunstância. É importante se preocupar com os nomes dados às entidades e os pontos onde elas podem ser quebradas para evitar a duplicação de dados.

Existe, porém, um detalhe que observei recentemente: parece existir uma tendência natural do modelador ligar algumas entidades às entidades que representam pessoas ao invés de ligá-las onde realmente preservaria a integridade referencial.

"Foreach" vs. "For" em PHP

Resumo:
performance

Hoje, em uma discussão em uma lista de PHP, fui surpreendido com a informação de que a estrutura "for" era mais rápida que a estrutura "foreach". Depois me deram a fonte da informação: The PHP Benchmark. Na fonte, diz que o "for" é mais rápido para escrita, mas é mais lento para leitura dos elementos percorridos. Observando o código do site, cheguei a conclusão de que ele estava meio furado.

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.

Entendendo o Unicode e UTF-8

Resumo:

Se você trabalha com programação Web, provavelmente já utilizou a codificação de caracteres Latinos (ISO-8859-1) e conhece ou já deve ter ouvido falar de Unicode. Este artigo mostra o que é Unicode, quais os benefícios e como trabalhar com ela.

Tarefas agendadas via Cron + PHP

Resumo:

Em sistemas de informação, é comum existirem atividades que precisam ser realizadas sob agendamento. Normalmente esta característica é necessária por um dos motivos:

  1. porque a tarefa precisa ser executada em determinado instante para prover informações a partir daquele momento;
  2. porque a tarefa é muito demorada e é inviável que o usuário que a invoque fique esperando até que ela termine.

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.

Script PHP com Dados Binários

Resumo:

Existe um mecanismo do PHP que permite embutir trechos de dados (inclusive dados binários) que não serão sequer interpretados pelo interpretador de PHP. Diferente do comando "exit", que interrompe a execução do script, mas não interrompe o parser do PHP, existe o comando "__halt_compiler", que ignora absolutamente tudo que esteja abaixo do ponto em que foi chamado.