Definindo namespaces

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Embora qualquer código PHP válido possa estar contido em um namespace, apenas os seguintes tipos de código são afetados por namespaces: classes (incluindo abstratas e traits), interfaces, funções e constantes.

Namespaces são declarados usando a palavra-chave namespace. Um arquivo contendo um namespace deve declarar o namespace no início do arquivo antes de qualquer outro código - com uma exceção: a palavra-chave declare.

Example #1 Declarando um único namespace

<?php
namespace MeuProjeto;

const CONEXAO_OK = 1;
class Conexao { /* ... */ }
function conectar() { /* ... */ }

?>

Note: Nomes totalmente qualificados (ou seja, nomes que começam com uma barra invertida) não são permitidos em declarações de namespace, por serem construções interpretadas como expressões de namespace relativos.

A única construção de código permitida antes de uma declaração de namespace é a declaração declare, para definir a codificação de um arquivo-fonte. Além disso, nenhum código não-PHP pode preceder uma declaração de namespace, incluindo espaço em branco extra:

Example #2 Declarando um único namespace

<html>
<?php
namespace MeuProjeto; // fatal error - namespace must be the first statement in the script
?>

Além disso, ao contrário de qualquer outra construção do PHP, o mesmo namespace pode ser definido em vários arquivos, permitindo a divisão do conteúdo de um namespace no sistema de arquivos.