Namespaces
Usando namespaces
Namespaces
PHP Manual

## Definição de Namespace

O namespace é declarado usando a palavra chave namespace, que deve ser usada logo no começo do arquivo. Exemplo:

Exemplo #1 Defining namespace

`<?php
namespace MyProject::DB;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
?>`
Um mesmo nome de namespace pode ser usado em múltiplos arquivos.

Namespace pode conter definições de classes, constantes e funções, mas não código livre.

Definição do Namespace fazem seguinte:

- Dentro do namespace, todas os nomes de as classes, funções e constantes na definição são automaticamente prefixados com o nome do namespace. O nome da classe é sempre o nome completo, i.e. no exemplo acima a classe é chamada MyProject::DB::Connection.
- Definição de constantes criam constantes que são compostas do nome do namespace e o nome da constante. Com constantes de classes, constantes do namespace podem somente conter valores estáticos.

- Nome não qualificado de classe (i.e., nome não contém ::) são resolvido em runtime seguindo este procedimento:

  1. A classe é verificada dentro do atual namespace (i.e. prefixando o nome com o atual nome do namespace) sem tentar fazer autoload.
  2. A classe é verificada dentro do namespace global sem tentar fazer autoload.
  3. É tentado autoloading para nomes no namespace atual.
  4. Se anteriormente falhou, a verificação falha.

- Nome não qualificado de função (i.e., nome não contém ::) é verificado em tempo de execução primeiro no namespace atual e então no espaço global.

- Nome de constantes não qualificada são verificadas primeiro no namespace atual e então entre as constantes globalmente definidas.

Veja também em regras de resolução de nomes.

Namespaces
Usando namespaces
Namespaces
PHP Manual