Olá a todos,

Possivelmente em Abril o pessoal irá lançar definitivamente a nova versão do PHP, 5.3, trazendo algumas novidades legais, dentre elas uma que achei fantástica, a Namespaces.

O problema

Em um projeto grande onde não só você vai mexer ou mesmo em que usa muitas blibliotecas diferentes ao mesmo tempo não é dificil ocorrer de você escrever uma classe com nome duplicado

Classe criada por jõao para retirar dinheiro do banco
CODE
class Retira {

}


function Retira() {

}


Classe criada por maria para retirar extrato de conta
CODE
class Retira {

}


function Retira() {

}


Se essas duas classes forem incluídas no mesmo local e chamarem o método Retira já imaginou a confusão que vai dar? o cliente vai tentar sacar e invés de sacar vai sair o extrato wacko.gif

A solução

Assim o pessoal do PHP resolveu dar um jeito nisso criando o Namespaces, agora você pode fazer isto:

Classe criada por jõao para retirar dinheiro do banco
CODE
namespace JoaoLibrary::Saque;
class Retira {

}


function Retira() {

}


Classe criada por maria para retirar extrato de conta
CODE
namespace MariaLibrary::Extrato;
class Retira {

}


function Retira() {

}


Chamando da seguinte forma
CODE
$a = new MariaLibrary::Extrato::Retira;
MariaLibrary::Extrato::Retira();


Parece nada mas quando você começa a usar faz uma diferença legal, principalmente trabalhando com frameworks. O problema é acostumar ;/

Baixe o PHP 5.30 e teste você mesmo: http://snaps.php.net/php5.3-200901090330.tar.gz
biggrin.gif