Versão 5.3 do PHP terá namespaces
Descobri hoje (um pouco atrasado) que em novembro entrou no branch 5.3 do repositório do PHP o código que trará para a linguagem o poder dos namespaces. Os namespaces existem em linguagens populares como C++, Ruby (na forma de módulos) e Java (na forma de packages) e sempre fizeram falta no PHP.
A partir da leitura de outros blogs, me parece que a utilização de namespaces será mais ou menos assim (utilizo MyProject::StringHelpers como um namespace hipotético):
// o namespace MyProject::StringHelpers será utilizado até
// o fim do arquivo
namespace MyProject::StringHelpers;
function camelize($str) {
}
function humanize($str) {
}
class Foo {
}
// utilizando funções e classes definidas no namespace
// MyProject::StringHelpers (notação longa)
MyProject::StringHelpers::camelize('php_with_namespaces');
$foo = new MyProject::StringHelpers::Foo();
// importando o namespace para o escopo global não precisamos
// mais utilizar o prefixo para acessar suas funções
use MyProject::StringHelpers;
humanize('php_with_namespaces');
Além de funções será possível definir classes e constantes dentro de um namespace.
Fiquei realmente surpreso ao saber que teremos essa novidade no PHP. Embora seja uma característica importantíssima e manjada, já havia lido previsões assustadoras de que namespaces não estariam presentes nem no PHP 6.
O que nos aguarda? Funções de primeira classe? Eu acredito que sim. Entrei hoje na lista de discussão dos desenvolvedores do PHP e há conversas sobre closures. Quem sabe o PHP 6 será uma nova revolução para a linguagem, com a adição de características funcionais que tanto tem impulsionado o Ruby e o JavaScript nos últimos tempos (acho que o Java também terá closures em sua próxima versão).
Vou tentar instalar a versão 5.3 no meu Ubuntu a partir dos snapshots, e volto a tratar das novidades do PHP assim que puder.
Ah, o mais importante: a versão 5.3 é aguardada para o início de 2008.

October 28th, 2008 às 9:00 am
[...] Para quem não sabe, é prometida para a versão 5.3 do PHP a adição de suporte a namespaces. Eu falei um pouco sobre isso no ano passado. [...]