Definir varios espacios de nombres en un mismo fichero

(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();
}
?>