(PHP 5 >= 5.3.0)
La capacidad de referirse a un nombre completamente cualificado externo con un alias, o importar, es una característca importante de los espacios de nombres. Esto es similar a la capacidad de los sistemas de archivos basados en Unix de crear enlaces simbólicos a un archivo o directorio.
Los espacios de nombres de PHP soportan tres tipos de poner alias o importar: apodar un nombre de clase, apodar un nombre de interfaz, y apodar un nombre de espacio de nombres. Observe que importar una función o una constante no está soportado.
En PHP, apodar se lleva a cabo con el operador use. Aquí hay un ejemplo que muestra los tres tipos de importación:
Ejemplo #1 Importar/apodar con el operador use
<?php
namespace foo;
use Mi\Completo\NombreDeClase as Otra;
// esto es lo mismo que usar Mi\Completo\NombreEN as NombreEN
use Mi\Completo\NombreEN;
// importar una clase global
use ArrayObject;
$obj = new namespace\Otra; // instancia un objeto de la clase foo\Otra
$obj = new Otra; // instancia un objeto de la clase class Mi\Completo\NombreDeClase
NombreEN\suben\func(); // llama a la función Mi\Completo\NombreEN\subes\func
$a = new ArrayObject(array(1)); // instancia un objeto de la clase ArrayObject
// sin el "use ArrayObject" instanciaríamos un objeto de la clase foo\ArrayObject
?>
PHP soporta adicionalmente un atajo apropiado para poner múltiples sentencias use en la misma línea
Ejemplo #2 Importar/apodar con el operador use, múltiples sentencias use combinadas
<?php
use Mi\Completo\NombreDeClase as Otra, Mi\Completo\NombreEN;
$obj = new Otra; // instancia un objeto de la clase Mi\Completo\NombreDeClase
NombreEN\suben\func(); // llama a la función Mi\Completo\NombreEN\suben\func
?>
La importación se realiza en tiempo de compilación, y al hacerlo no afecta a los nombres de clases, funciones o constantes.
Ejemplo #3 La importación y los nombres dinámicos
<?php
use Mi\Completo\NombreDeClase as Otra, Mi\Completo\NombreEN;
$obj = new Otra; // instancia un objeto de la clase Mi\Completo\NombreDeClase
$a = 'Otra';
$obj = new $a; // instancia un objeto de la clase Otra
?>
Además, la importación sólo afecta a los nombres no cualificados y cualificados. Los nombres completamente cualificados son absolutos, y no son afectados por la importación.
Ejemplo #4 La importación y los nombres completamente cualificados
<?php
use Mi\Completo\NombreDeClase as Otra, Mi\Completo\NombreEN;
$obj = new Otra; // instancia un objeto de la clase Mi\Completo\NombreDeClase
$obj = new \Otra; // instancia un objeto de la clase Otra
$obj = new Otra\cosa; // instancia un objeto de la clase Mi\Completo\NombreDeClase\cosa
$obj = new \Otra\cosa; // instancia un objeto de la clase Otra\cosa
?>
La palabra clave use debe ser declarada en el ámbito exterior de un fichero (el ámbito global) o dentro de declaraciones de espacios de nombres. Esto es porque la importación se realiza en tiempo de compilación y no en tiempo de ejecución, por lo que no puede ser delimitada en bloque. El siguiente ejemplo mostrará un uso ilegal de la palabra clave use:
Ejemplo #5 Regla de importación ilegal
<?php
namespace Languages;
class Greenlandic
{
use Languages\Danish;
...
}
?>
Nota:
Las reglas de importación tiene una base por fichero, lo que significa que los archivos incluidos NO heredarán las reglas de importación del padre.