Threads no PHP com pthreads

Resumo:
Introdução
representação de threads de um processo

Thread é um importante recurso de algumas linguagens de programação, que provê melhoria de performance através da execução de blocos de instruções em paralelo. Por outro lado, ela também exige uma forma própria de pensar na solução dos problemas. Neste artigo, veremos rapidamente o que são threads e um tutorial de como e onde elas podem poderão ser usadas com PHP.

Lançamento do PHP 5.5.0

Resumo:
Introdução
bolo de comemoração do lançamento do PHP 5.5.0

Hoje (20/06/2013) foi lançado oficialmente o PHP 5.5.0, a nova família de versões PHP 5.5.X.

Esta é uma versão estável, portanto é recomendada para uso em servidores em produção. Para baixá-la, acesse a página de download do PHP

Quem acompanhou o blog nos últimos meses já deve estar por dentro das principais novidades. Mas se você perdeu alguma coisa, não se preocupe. Separei novamente uma lista de links para os principais artigos do blog que apresentaram estas novidades da linguagem, em ordem cronológica.

Role Attribute dando mais sentido ao HTML

Resumo:
Introdução

O atributo role é um atributo criado para dar mais semântica aos elementos de documentos baseados em marcação, como o HTML, além de oferecer mais acessibilidade. A partir de Março de 2013, este atributo passou a ser um recurso recomendado para uso pela W3C. Portanto, vamos entender melhor o que ele é, em que contexto mais amplo ele está situado e como usá-lo na prática.

Declarando tipos numéricos no MySQL

Resumo:
golfinho, que é o animal símbolo do MySQL
Introdução

MySQL é um SGBD muito popular, mas muito robusto. Por ser robusto e cheio de recursos, a documentação do MySQL não poderia ser diferente: também é muito extensa. Talvez seja por este motivo que nem sempre ela é devidamente estudada e, com isso, nota-se que muita gente acaba utilizando os recursos disponíveis de forma incorreta, seja por desconhecimento ou descuido.

Neste artigo, veremos sobre um destes enganos comuns de utilização do MySQL: a má especificação dos tipos numéricos nas colunas de tabelas MySQL.

Design Responsivo com Media Queries

Resumo:
Introdução
Diferentes dispositivos exibindo o mesmo conteúdo, ilustrando um design responsivo

Design Responsivo (ou Responsive Design) é uma técnica que tem ganhado destaque nos últimos tempos, mas sua ideia é bastante antiga. Ela está diretamente relacionada ao pensamento de Tim Berners-Lee (o criador da Web), que dizia que os documentos da Web deveriam ser acessíveis por qualquer tipo de hardware que estivesse conectado à Internet, seja ele uma estação física ou móvel, com tela pequena ou grande. Ou seja, Design Responsivo é o nome de uma técnica que possibilita isso: prover um documento na Web que pode ser visualizado por qualquer dispositivo, de modo que o layout se adeque de forma amigável às restrições do aparelho.

Gerar gráficos em PHP com o Google Charts

Resumo:
Exemplo de Gráfico de Torta
Introdução

Em 2011, escrevi o artigo "Criando Gráficos com o Google Chart e PHP", que mostrava como gerar gráficos através da passagem de parâmetros para URL de geração de gráficos provida pelo Google. Porém, este recurso foi depreciado em abril de 2012 e aparentemente renomeado para "Image Charts" (uma seção do Google Charts).

Neste artigo, veremos o funcionamento do novo Google Charts e quais suas vantagens e desvantagens em relação ao recurso depreciado.

Ordenação de Arrays em PHP

Resumo:
Introdução

Ordenação de arrays é um tema muito simples, mas que também gera muitas dúvidas na comunidade de PHP. Neste artigo, veremos desde uma ordenação simples de arrays usando a função sort até as formas mais sofisticadas, envolvendo matrizes ou regras de comparação específicas.

Abrir sessões em PHP de forma econômica

Resumo:
macaco pensando
Introdução

No artigo Utilizando Sessões em PHP de forma inteligente, foi apresentado o funcionamento das sessões em PHP e algumas estratégias de como fazer bom uso das sessões. Neste artigo, veremos um outro detalhe muito importante, e que não foi citado no primeiro artigo. Trata-se da abertura de sessões de forma econômica, ou seja, apenas quando necessário.

Último Beta do PHP 5.5.0

Resumo:
Introdução

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.

Hoje foi lançado o PHP 5.5.0 BETA 4, que provavelmente será o último BETA do PHP 5.5.0. Para baixar esta versão de teste, acesse: Anúncio do PHP 5.5.0 BETA 4.

Os próximos lançamentos provavelmente serão de Release Candidates. A primeira é prevista para 9 de maio (2013). Após as Release Candidates teremos finalmente a versão final e estável para uso.

Layout Toolkit

Resumo:
imagem de um pincel
Introdução

Toolkits de front-end são estruturas que oferecem recursos para auxiliar o desenvolvimento do layout das aplicações. No caso das aplicações web, normalmente eles oferecem folhas de estilo CSS bem organizadas, scripts JavaScript para oferecer interações com elementos de interface, um conjunto de ícones e, principalmente, padrões para a confecção do layout. Eles são muito úteis para desenvolvedores de aplicações web que não tem muito domínio ou paciência com CSS, mas também podem facilitar muito a vida de web designers e de desenvolvedores que já dominam o CSS, afinal, eles foram extensivamente usados e testados para se comportar da melhor forma possível na maioria dos navegadores web atuais.

A maioria deles vai de encontro com o que foi comentado no artigo Nova Geração de Web Design, que citava o "layout limpo" como sendo a principal tendência dos layouts modernos. Além disso, alguns seguem a crescente tendência "Mobile First" e design responsivo, que prevê um estudo da arquitetura do front-end para ser suportado por dispositivos móveis e por telas maiores. Você pode conhecer mais sobre o assunto no artigo Mobile First – A arte de pensar com foco.

Neste artigo, veremos 3 frameworks de front-end, mostrando as capacidades de cada um: Gumby Framework versão 2.0.0, Twitter Bootstrap versão 2.3.1 e Foundation versão 4.1.2.

PHP 5.5.0 Beta 1

Resumo:
Introdução

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.

Nos últimos meses, escrevi sobre as versões Alpha do PHP 5.5, que representa a nova "família" de versões 5.5.X. A princípio, seriam lançadas apenas quatro versões alpha, mas a equipe de desenvolvimento optou por lançar o Alpha 5 e o Alpha 6, com algumas correções e melhorias. Hoje, porém, foi lançada a primeira versão Beta. E, para nossa alegria, foram incorporadas algumas melhorias, além das correções. Lembrando que esta versão ainda não deve ser usada em produção. É apenas uma versão para testes.

Etag - Cache de arquivos no navegador

Resumo:
performance
Introdução

No primeiro artigo "Expires no Apache - Cache de arquivos no navegador", vimos como configurar o apache para utilizar o mod_expires para sugerir o cache de arquivos estáticos no navegador, com base na data de modificação. No segundo artigo "Expires no PHP - Cache de arquivos no navegador", vimos algo similar, mas aplicado a arquivos gerados dinamicamente.

Neste artigo, veremos um outro mecanismo usado para sugerir o armazenamento de um documento no cache do navegador. Este mecanismo é chamado ETag (Entity Tag).

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.

PHP 5.5.0 Alpha 4

Resumo:
Introdução

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.

Nos últimos posts, vimos algumas novidades do PHP 5.5 Alpha 1, Alpha 2 e Alpha 3. Hoje, finalmente, foi lançada a última versão alpha do PHP 5.5.0 e, portanto, são as últimas novidades a serem inseridas.

PHP em modo interativo

Resumo:
Introdução

Embora o PHP seja especialmente criado para atender requisições Web, ele também pode ser executado em um terminal de comandos (prompt), através do php cli. Pelo terminal, podemos executá-lo de diferentes formas e, neste post, veremos quais são elas.

PHP 5.5.0 Alpha 3

Resumo:
Introdução

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.

Em novembro de 2012, postei sobre o lançamento do PHP 5.5.0 Alpha 1, em dezembro de 2012, foi lançada a versão PHP 5.5.0 Alpha 2 e, hoje (10/01/2013) foi lançada a versão PHP 5.5.0 Alpha 3. Esta nova versão também recebe algumas poucas novidades e principalmente algumas correções.

PHP 5.5.0 Alpha 2

Resumo:
Introdução

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.

Em novembro de 2012, postei sobre o lançamento do PHP 5.5.0 ALPHA 1, que daria início à família de versões 5.5.X. Porém, dia 21 de dezembro foi disponibilizada a versão ALPHA 2, com outras melhorias. De fato, na ocasião fiquei em dúvida se seriam apenas aquelas melhorias para o PHP 5.5.0, mas agora já sabemos que a lista de melhorias ainda pode crescer, enquanto está em fase alpha.

Montando seletores CSS eficiêntes

Resumo:
Introdução

Recentemente, li o artigo How to write efficient css selectors (Como escrever seletores CSS eficiêntes) e aprendi que os seletores descendentes do CSS na verdade são avaliados da direita para a esquerda e não da esquerda para direita, como eu imaginava. Este é um pequeno detalhe, mas que faz toda a diferença na hora de montar seletores CSS de forma eficiênte para que o navegador renderize uma página com alta performance.

Neste artigo, vamos entender melhor como funciona esse processo de aplicação dos estilos pelas folhas de estilo e debater sobre a criação de seletores CSS eficiêntes.

Servidor HTTP nativo no PHP

Resumo:
Introdução

Embora possa ser usada para outros propósitos, a linguagem PHP é recheada de recursos especialmente úteis para o desenvolvimento de aplicações Web. Porém, uma aplicação Web dinâmica depende também de um servidor HTTP, que recebe as requisições do user-agent e, caso necessário, solicita que o PHP realize algum processamento para gerar um documento, que é retornado para o user-agent.

Os servidores HTTP mais comuns para PHP são o Apache, que é multiplataforma, e o IIS, da Microsoft. Logo, para testar ou utilizar qualquer aplicação web feita em PHP, é necessário instalar também um servidor HTTP e configurá-lo para se comunicar com o PHP.

Porém, na versão 5.4 do PHP, foi criado um servidor HTTP dentro do próprio pacote de recursos da linguagem PHP. Embora seja um servidor simplificado, que não foi projetado para aceitar altíssimas cargas, ele realiza as operações esperadas de um servidor HTTP e, portanto, é útil para testes locais.

Generators no PHP 5.5

Resumo:
Introdução

Uma das mais importantes novidades do PHP 5.5 foi o suporte aos generators. Esta novidade permite a criação de alguns tipos de iteradores de forma muito mais fácil e intuitiva.

Já comentei sobre iteradores no artigo As interfaces Iterator, ArrayAccess e Countable. Porém, vou apresentar rapidamente o conceito para quem ainda não o conhece.

API para hash de senhas no PHP 5.5

Resumo:
Introdução
cadeado

No artigo Autenticação e criptografia de senhas, vimos os mecanismos que a linguagem PHP oferece para gerar hash, especialmente para armazenamento seguro de senhas, além do processo de conferência de um hash com a senha real. Porém, até então não existia uma padronização sobre este processo. Com isso em vista, a equipe de desenvolvimento do PHP implementou uma API para geração de hash de senhas.

Este artigo irá apresentar esta, que é uma das novidades do PHP 5.5.

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.

PHP 5.4 é lançado!

Hoje foi lançada a nova versão do PHP, a versão 5.4, após várias e várias release candidates. E foi um lançamento inesperado (pelo menos para mim). Dia 24/02 haviam anunciado no php.net que uma nova release candidate seria lançada hoje, mas, ao invés disso, foi lançada a versão release final.

Eu já escrevi sobre algumas melhorias da versão 5.4, mas você pode ter uma boa noção das mudanças lendo a página Migrando do PHP 5.3 para o 5.4.

Mas mesmo com este lançamento, me pergunto o quanto a versão 5.3 está plenamente em uso. A verdade é que já na versão 5.3 surgiram ótimos recursos, mas também algumas incompatibilidades. Isso fez com que muitos sites optassem por continuar na versão 5.2.x até hoje. Com a versão 5.4 também surgem recursos muito interessantes, enquanto extingue alguns recursos depreciados há algum tempo. Torço para que desenvolvedores PHP fiquem cada vez mais atentos à evolução da linguagem para sempre estarem cientes dos novos recursos e das atividades depreciadas.

Obtendo o tamanho de arquivo via File Handle em PHP

Resumo:
Dica rápida

Caso você tenha um file handle aberto (tipo resource do PHP) e queira saber qual o tamanho do arquivo, pode usar as funções ftell e fseek para determinar o valor desejado. Basta encaminhar o ponteiro do arquivo para o final dele e depois obter a posição.

A utilização da função filesize não ajuda, pois para usá-la é necessário passar o caminho do arquivo. Existem situações em que não temos acesso a esse caminho. Para isso criei esta nova função.

Estruturação e Organização do CSS (parte 2)

Resumo:
Introdução

No post anterior comecei uma série de dicas sobre estruturação do CSS, inicialmente apresentando a correta utilização dos seletores. Neste artigo, veremos algumas estratégias para separação de estilos em arquivos e organização das regras de estilos dentro de um arquivo.

Estruturação e Organização do CSS (parte 1)

Resumo:
Introdução

Desde as primeiras páginas web até os dias de hoje, muitas coisas mudaram em relação à estruturação dos estilos aplicados. Por algum momento, páginas utilizavam estilos embutidos no HTML. Aos poucos, isso foi mudando e os estilos foram separados. Atualmente, é altamente recomendado o uso de folhas de estilos externas para possibilitar manutenções em estilos sem afetar a estrutura do documento. Além disso, a transferência de dados entre cliente e servidor fica reduzida (já que as folhas de estilos podem ser cacheadas), e também melhora a legibilidade da estrutura do documento.

Nos próximos posts vou citar algumas dicas sobre como estruturar seu CSS para permitir mudanças futuras sem grandes impactos e, na medida do possível, justificar as abordagens.