Introdução a namespaces em POO no PHP
Se, ao executar um script PHP, houver duas classes com o mesmo nome, elas entrarão em conflito, o que resultará em um erro fatal. Isso, na verdade, não é muito conveniente, pois é preciso ficar sempre monitorando a exclusividade dos nomes.
Por exemplo, considere a seguinte situação:
você tem um site que possui usuários
e administradores. Enquanto na pasta users estão armazenadas
as classes para os usuários, na pasta admin
estão as classes para o administrador.
Suponha que tanto para os usuários quanto para o administrador seja necessária uma certa
classe Page, responsável por algumas
páginas do site. Nesse caso, para os usuários haverá
sua própria classe, e para o administrador - outra. Nessa
situação, é onde nos deparamos com o conflito de nomes.
A maneira mais simples de resolver esse conflito
é dar nomes diferentes para as classes, por exemplo,
UsersPage e AdminPage. No entanto, esse
caminho leva gradualmente ao aparecimento
de nomes de classes muito longos.
No PHP, existe outra maneira de resolver o problema - namespaces. A ideia é a seguinte: cada classe pode pertencer a um namespace e, com isso, a exclusividade dos nomes das classes só precisa ser mantida dentro desse namespace.
Ou seja, para resolver nosso problema, podemos
fazer o seguinte: atribuir uma classe Page
a um namespace, por exemplo,
Users, e a segunda classe Page
a outro namespace, por exemplo,
Admin.