Definindo vários namespaces no mesmo arquivo
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Vários namespaces também podem ser declarados no mesmo arquivo. Existem duas sintaxes permitidas.
Example #1 Declarando vários namespaces, sintaxe de combinação simples
<?php
namespace MeuProjeto;
const CONEXAO_OK = 1;
class Conexao { /* ... */ }
function conectar() { /* ... */ }
namespace OutroProjeto;
const CONEXAO_OK = 1;
class Conexao { /* ... */ }
function conectar() { /* ... */ }
?>
Essa sintaxe não é recomendada para combinar namespaces em um único arquivo. Em vez disso, é recomendado usar a sintaxe alternativa de colchetes.
Example #2 Declarando vários namespaces, sintaxe de colchetes
<?php
namespace MeuProjeto {
const CONEXAO_OK = 1;
class Conexao { /* ... */ }
function conectar() { /* ... */ }
}
namespace OutroProjeto {
const CONEXAO_OK = 1;
class Conexao { /* ... */ }
function conectar() { /* ... */ }
}
?>
É altamente desaconselhado como prática de programação combinar vários namespaces no mesmo arquivo. O principal caso de uso é combinar vários scripts PHP no mesmo arquivo.
Para combinar código global sem namespace com código com namespace, apenas a sintaxe de colchetes é suportada. O código global deve ser encapsulado em uma declaração de namespace sem nome de namespace, como em:
Example #3 Declarando vários namespaces e código sem namespace
<?php
namespace MeuProjeto {
const CONEXAO_OK = 1;
class Conexao { /* ... */ }
function conectar() { /* ... */ }
}
namespace { // código global
session_start();
$a = MeuProjeto\conectar();
echo MeuProjeto\Conexao::iniciar();
}
?>
Nenhum código PHP pode existir fora dos colchetes do namespace, exceto uma declaração declare de abertura.
Example #4 Declarando vários namespaces e código sem namespace
<?php
declare(encoding='UTF-8');
namespace MeuProjeto {
const CONEXAO_OK = 1;
class Conexao { /* ... */ }
function conectar() { /* ... */ }
}
namespace { // código global
session_start();
$a = MeuProjeto\conectar();
echo MeuProjeto\Conexao::iniciar();
}
?>