(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Varios espacios de nombres también pueden ser declarados en el mismo fichero. Hay dos sintaxis autorizadas.
Ejemplo #1 Declaración de varios espacios de nombres, sintaxis de combinación simple
<?php
namespace MiProyecto;
const CONECTAR_OK = 1;
class Conexión { /* ... */ }
function conectar() { /* ... */ }
namespace OtroProyecto;
const CONECTAR_OK = 1;
class Conexión { /* ... */ }
function conectar() { /* ... */ }
?>
Esta sintaxis no es recomendada para combinar espacios de nombres en un solo fichero. En su lugar, se recomienda utilizar la sintaxis de llaves.
Ejemplo #2 Declaración de varios espacios de nombres, sintaxis de llaves
<?php
namespace MiProyecto {
const CONECTAR_OK = 1;
class Conexión { /* ... */ }
function conectar() { /* ... */ }
}
namespace OtroProyecto {
const CONECTAR_OK = 1;
class Conexión { /* ... */ }
function conectar() { /* ... */ }
}
?>
Se recomienda encarecidamente, como práctica de codificación, no mezclar varios espacios de nombres en el mismo fichero. El uso recomendado es combinar varios scripts PHP en el mismo fichero.
Para combinar varios códigos sin espacios de nombres en código con espacio de nombres, solo se soporta la sintaxis de llaves. El código global debe estar encuadrado por un espacio de nombres sin nombre, tal como este:
Ejemplo #3 Declaración de varios espacios de nombres con un espacio sin nombre
<?php
namespace MiProyecto {
const CONECTAR_OK = 1;
class Conexión { /* ... */ }
function conectar() { /* ... */ }
}
namespace { // código global
session_start();
$a = MiProyecto\conectar();
echo MiProyecto\Conexión::iniciar();
}
?>
Ningún código PHP puede existir fuera de las llaves del espacio de nombres,
salvo para abrir una nueva instrucción declare
.
Ejemplo #4 Declaración de varios espacios de nombres con un espacio sin nombre (2)
<?php
declare(encoding='UTF-8');
namespace MiProyecto {
const CONECTAR_OK = 1;
class Conexión { /* ... */ }
function conectar() { /* ... */ }
}
namespace { // código global
session_start();
$a = MiProyecto\conectar();
echo MiProyecto\Conexión::iniciar();
}
?>