(PHP 5 >= 5.3.0, PHP 7)
También se pueden declarar varios espacios de nombres en un mismo fichero. Se permiten dos tipos de sintaxis.
Ejemplo #1 Declarar 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() { /* ... */ }
?>
No se recomienda esta sintaxis para combinar espacios de nombres en un único fichero. En su lugar, se recomienda emplear la sintaxis de llaves alternativa.
Ejemplo #2 Declarar 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 desaconseja completamente, como práctica de código, la combinación de varios espacios de nombres en un mismo fichero. El caso de uso principal es combinar varios scripts de PHP en el mismo fichero.
Combinar código global que no es de espacio de nombres con código que sí lo es, sólo está soportado mediante la sintaxis de llaves. El código global debería estar encerrado en una declaración de espacio de nombres sin nombre de espacio de nombres:
Ejemplo #3 Declarar múltiples espacios de nombres y código que no es de espacio de nombres
<?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();
}
?>
No puede existir código de PHP fuera de las llaves del espacio de nombres, excepto para una sentencia de apertura 'declare'.
Ejemplo #4 Declarar varios espacios de nombres y código que no es de espacio de nombres
<?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();
}
?>