Thought this might help other newbies like me...
Name collisions means:
you create a function named db_connect, and somebody elses code that you use in your file (i.e. an include) has the same function with the same name.
To get around that problem, you rename your function SteveWa_db_connect which makes your code longer and harder to read.
Now you can use namespaces to keep your function name separate from anyone else's function name, and you won't have to make extra_long_named functions to get around the name collision problem.
So a namespace is like a pointer to a file path where you can find the source of the function you are working with
Namespaces - Visão geral
Namespaces no PHP são projetados para resolver problema de escopo em bibliotecas PHP extensas. No PHP, todas as definições de classes são globais. Assim, quando uma autor de uma biblioteca cria vários utilitários ou públicas classes para uma biblioteca, ele precisa ter cuidado com a possibilidade de outra biblioteca com mesma funcionalidade exista e assim escolher nomes únicos para que estas bibliotecas possam ser usadas juntas. Normalmente isto é resolvido prefixando o nome da classe com uma string única - e.g., classes de banco de dados tem prefixo My_Library_DB, etc. Com o crescimento da biblioteca, mais prefixos são adicionados, criando então nomes grandes.
Os namespaces permitem o desenvolvedor manusear nomes num escopo sem usar nomes grandes cada vez que a classe for referenciada, e resolver o problema de espaço global compartilhado sem fazer um código ilegível.
Namespaces está disponível a partir do PHP 5.3.0. Esta seção é experimental e sujeita a mudanças.
Just a note: namespace (even nested or sub-namespace) cannot be just a number, it must start with a letter.
For example, lets say you want to use namespace for versioning of your packages or versioning of your API:
namespace Mynamespace\1; // Illegal
Instead use this:
namespace Mynamespace\v1; // OK
