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.

Derreferenciamento de arrays e strings constantes no PHP

Resumo:
Introdução

No artigo anterior, postei sobre o anúncio do PHP 5.5.0 alpha, citando as novidades da futura versão do PHP. Neste artigo, veremos sobre a melhoria "Derreferenciamento de arrays e strings constantes" (constant array/string dereferencing). Não se assuste com o nome, pois é uma melhoria simples de entender.

Novidades do PHP 5.5.0

Resumo:
Introdução
bolo de aniversário para o PHP 5.5.0 alpha

Atenção: o PHP 5.5 foi lançado em 20/06/2013. Confira as últimas notícias sobre o Lançamento do PHP 5.5.0.

No dia 15/11/2012 foi disponibilizada a versão alpha do PHP 5.5.0, que dará início à nova geração de versões do PHP, a geração "5.5.x". E, para o incremento da versão secundária da linguagem, vieram várias melhorias notáveis. Neste post, vou apenas citar quais são as melhorias e, nos próximos posts, pretendo aprofundar nos tópicos mais interessantes.

Se você quiser baixar esta versão e testá-la, você pode acessar o link PHP QAT Web Page. Note que, junto com esta versão alpha, também foi lançada a Release Candidate do PHP 5.4.9, já que a geração 5.4.x ainda terá suporte por um tempo considerável.

Manipulando o cabeçalho de resposta HTTP pelo PHP

Resumo:
Introdução

Neste artigo, veremos como utilizar a função header do PHP e algumas aplicações práticas. Embora header seja uma função importantíssima da linguagem e também seja muito usada, nem sempre os programadores sabem seu funcionamento exato. Além disso, veremos alguns erros comuns cometidos ao usar a função.

Se você é um programador PHP iniciante e acredita que a função header sirva apenas para redirecionar o usuário de uma página para outra nos seus sites em php, então leia este artigo e entenda em detalhes o que você está fazendo.

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.

Trabalhando de acordo com a Localidade em PHP

Resumo:
Introdução

Muitas aplicações web possuem uma área de abrangência bastante restrita, normalmente aos usuários de uma entidade ou pessoas de um país. Porém, também existem aplicações mais globais, usadas por pessoas de diferentes países e que possuem notações próprias para trabalhar com palavras e números.

A questão da internacionalização de uma aplicação envolve várias tarefas, como a tradução dos termos utilizados, possíveis reformulações de layout, e a aplicação de regras relacionadas à localidade. Neste artigo vamos tratar especificamente desta última, que são as regras relacionadas à localidade.

Hijax - Ajax não obstrutivo

Resumo:
Introdução

Recentemente vi uma apresentação de slides cujo título era Hijax - Progressive Enhancement with Ajax (Hijax - Melhoria Progressiva com Ajax). Por abordar um tema muito interessante, resolvi compartilhar sobre o assunto aqui no blog.

O termo "Hijax" foi proposto por Jeremy Keith, e tem como princípio o planejamento/implementação de soluções com Ajax de forma acessível e não obstrutiva, ou seja, a aplicação se mantém funcional em navegadores com ou sem JavaScript habilitado ou disponível. Embora o tema esteja intimamente relacionado à acessibilidade, ele representa apenas a prática da organização de um documento HTML da forma como deveria ser feito em toda web.

Output Buffer do PHP e os mistérios do echo (parte 2)

Resumo:
Introdução

No artigo anterior, vimos uma introdução sobre o Output Buffer do PHP, com seus conceitos básicos e uma aplicação prática do recurso. Neste artigo, veremos a continuação do assunto, nos aprofundando em conceitos mais complexos e algumas aplicações práticas mais avançadas.

Output Buffer do PHP e os mistérios do echo (parte 1)

Resumo:
Introdução

Um dos comandos mais conhecidos do PHP é o echo, que "simplesmente" envia uma string para a saída padrão (STDOUT). Porém, o funcionamento aparentemente simples de um echo pode envolver conceitos bem mais complexos, como o output buffer e a transferência de pacotes HTTP de resposta do servidor para o cliente.

Neste post veremos alguns conceitos necessários para compreender a fundo o funcionamento do Output Buffer. Também veremos um exemplo inicial de como usufruir deste recurso para modificar dados que já foram "impressos" no PHP. No próximo post, veremos alguns exemplos mais complexos e suas aplicações práticas.

Expires no PHP - Cache de arquivos no navegador

Resumo:
performance

Introdução

No artigo Expires no Apache - Cache de arquivos no navegador, vimos como configurar o servidor HTTP (mais especificamente o Apache) para aproveitar o cache do navegador para guardar conteúdo estático, tais como imagens, arquivos CSS ou arquivos JS. Com isso, a performance do seu site será muito melhor (page speed), especialmente se utiliza muito conteúdo estático.

Neste artigo, veremos como fazer com que arquivos dinâmicos gerados com PHP possam usufruir do mesmo mecanismo de cache, mas sem prejudicar o caráter dinâmico da aplicação. Com isso, haverá ainda mais ganhos na performance, trazendo benefícios para o usuário e também para SEO.

Vagas de Emprego em PHP

Novidade no Blog

Agora o blog conta com o link "Vagas de Emprego em PHP", no menu superior do Blog. Este link aponta para uma página que sempre retorna vagas de emprego relacionadas com PHP e desenvolvimento web.

Convertendo ISO-8859-1 para UTF-8 de forma segura em PHP

Resumo:
Introdução

Já falamos várias vezes sobre Unicode, desde a definição de unicode, funções para manupular unicode, como utilizar unicode em todas camadas do sistema e como representar os símbolos na forma de html entities.

Sabemos que ISO-8859-1 foi uma codificação muito utilizada antes do surgimento do Unicode, mas que a tendência é que tudo seja migrado para Unicode e, no caso do ISO-8859-1, preferencialmente migrado para UTF-8. Porém, aplicações web estão sujeitas a situações das mais adversas, quando se trata de dados enviados pelo usuário. Existem casos em que um usuário consegue colar um texto em que parte dele deveria ser ISO-8859-1 e parte dele deveria ser UTF-8. Isso pode ocorrer ao copiar e colar trechos de aplicações para aplicações em sistemas de "origem duvidosa", que acabam gerando uma bagunça de bytes que, por acaso, acabam sendo enviadas para nossa aplicação.

Para resolver este problema, elaborei uma função parecida com utf8_encode, ou seja, converte os caracteres de ISO-8859-1 para UTF-8, porém, caso a função identifique um caractere UTF-8 no texto, ela o mantem intacto. Portanto, ela é útil para garantir que o texto final seja 100% UTF-8 válido.

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).

Ordenação Especial de Registros do BD

Resumo:
Introdução

Todos que trabalham com Bancos de Dados sabem que o comando SELECT permite que os resultados obtidos sejam ordenados de acordo com algum critério. Porém, a utilização mais comum do ORDER BY é com uma coluna do BD, e normalmente é especificada uma ordem crescente ou decrescente (ASC ou DESC).

Porém, em algumas situações, não queremos usar simplesmente uma ordem crescente ou decrescente. Por exemplo, se temos uma tabela com uma coluna "status" e queremos mostrar primeiro os registros com status "5", e depois mostrar o resto. Neste caso, precisamos de um recurso especial para ordenação.

Códigos de Retorno HTTP

Resumo:
Introdução

A Internet é suportada pelo protocolo HTTP, em que um cliente solicita um pedido ao servidor e este retorna um resultado. Este resultado deve sempre vir com um código numérico e, opcionalmente, algum conteúdo extra (como exemplo: podem ser instruções no cabeçalho do pacote de resposta, como uma solicitação para o cliente redirecionar para outro arquivo, ou o conteúdo de um arquivo HTML para ser renderizado no cliente).

É importante conhecer os principais códigos HTTP e utilizá-los da maneira correta, pois eles podem afetar a reputação de seu site.

Erros de Sintaxe em Scripts PHP

Resumo:
Dica rápida

Para detectar erros de sintaxe no PHP, podemos executar o php, no terminal de comandos, passando o parâmetro "-l" (lint), conforme o exemplo:

$ php -l script.php

Isso é útil quando queremos apenas saber se há erros de sintaxe, mas não queremos executar, de fato, o script.

Cuidados com a geração de XML

Resumo:
Introdução

Ao gerar documentos XML com conteúdo dinâmico é preciso tomar cuidado com a sintaxe XML para que o documento não seja "mal formado". Muita gente conhece a sintaxe básica do XML, que especifica coisas como: é preciso um elemento raiz único, todo elemento que é aberto precisa ser fechado (ou ter o fechamento simplificado com "/>"), todos atributos precisam ter nome e valor, mesmo que o valor seja vazio.

Porém, um detalhe que nem todos sabem é que os elementos que contém texto não podem incluir qualquer tipo de caractere. Neste artigo veremos detalhes sobre isso.

Manipulação de URL usando PHP

Resumo:
Introdução
Quebra cabeça de URL

No desenvolvimento web, é muito comum a utilização de links. Também é comum que os links precisem ser manipulados para incluir ou remover parâmetros. Neste post, veremos como manipular um link e seus parâmetros de forma facilitada e segura.

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.