O polêmico separador de namespaces do PHP

Em: 28/10/2008 Tags: Referencie do seu blog (Trackback)

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.

O que acabou criando discórdia entre os desenvolvedores do PHP e os usuários da linguagem foi a decisão do core team de substituir o então separador de namespaces :: por uma contra barra (\).

Ou seja, código que você futuramente escreveria assim:

Meu::belo::namespace

Escreverá assim:

Meu\belo\namespace

Contra-barra é melhor ou pior que dois pontos? Na verdade pra mim tanto faz, acho que nunca vou utilizar namespaces quando estiver programando PHP. Não que eles não sejam úteis, mas nunca cheguei a escrever grandes bibliotecas em PHP. Quando o fiz, não tive problemas em distribui-las por diretórios, utilizando convenções razoáveis para nomes de classe. Mas, sim, é verdade, é melhor escrever isso (não sei se esta será a sintaxe escolhida):

using MeuLongoPrefixoParaEvitarConflito;

class FrontController {
}

class FrontControllerHelper {
}

Do que escrever isto:

class MeuLongoPrefixoParaEvitarConflito_FrontController {
}

class MeuLongoPrefixoParaEvitarConflito_FrontControllerHelper {
}

O exemplo acima, na minha opinião, justifica a adição de namespaces à linguagem. Eu não escrevo frameworks PHP, mas quem escreve certamente vai agradecer muito.

Por outro lado, acho que namespaces chegaram tarde demais. Afinal, a linguagem já possui uma sopa de funções lançadas no namespace global (em torno de 3000 funções, se não estou enganado). Evidentemente nenhuma dessas funções será remanejada para um namespace adequada num futuro próximo (em nome da compatiblidade retroativa).

Artigos relacionados:

Escreva um comentário (utilize o formato Markdown)