Por que precisamos dos namespaces?

A medida que o código-fonte do PHP cresce e o número de classes, funções e bibliotecas cresce junto fica cada vez mais fácil de acontecer uma “colisão de nomes” que é quando duas classes/funções/variáveis/constantes têm o mesmo nome. Isso acarretará inúmeros erros ao seu sistema.

Até agora a solução foi definida por duas saídas: a primeira é o uso de prefixos, veja o exemplo o Word Press que coloca um “WP_” antes do nome da cada função ou classe.. A outra saída é o uso de nomes gigantescamente descitrivos como por exemplo “funcao_que_retorna_o_total_de_usuarios()”… O que eu nem vou comentar.

Agora, com os namespaces, temos uma terceira (e muito melhor) opção para solucionar esse problema!


O que faz esse tal de namespaces?

Imagine que você fez uma função nova para usar no seu site só que ela usa nomes e constantes com nomes genéricos (por exemplo: “user” e “database”)… Ela normalmente seria assim:
Código PHP:
<?php

function connect() {
    
// Faz a sua conexão com o banco de dados
}
 
?>
Só que se você usar alguma outra biblioteca/classe/função pronta, pode haver uma colisão de nomes e você vai precisar mudar o nome da sua função pra algo maior… Só que você não quer isso.

Aí, usando a maravilha do namespace, você faz assim:
Código PHP:
<?php

namespace MeuProjeto;

function 
connect() {
    
// Faz a sua conexão com o banco de dados
}

?>
E quando você precisar chamar a função do MeuProjeto é só fazer assim:
Código PHP:
<?php
    
// Inclui o arquivo com a função
    
include("conexao-MySQL.php");

    
// Chama a função dentro do namespace
    
MeuProjeto/connect();
?>
Eu usei apenas exemplo com funções, mas os namespaces funcionam muito bem com classes e constantes também! Vale a pena experimentar.

Fonte: Blog Thiago Belem