(PHP 5 >= 5.3.0, PHP 7)
Dentro de un espacio de nombres, cuando PHP se encuentra con nombre no cualificado en un contexto de nombre de clase, función o constante, lo resuelve con diferentes prioridades. Los nombres de clases siempre se resuelven con el nombre de espacio de nombres actual. Así, para acceder a clases de usuario internas o que no son de espacio de nombres, se debe referir a ellas con su nombre completamente cualificado:
Ejemplo #1 Acceder a clases globales dentro de un espacio de nombres
<?php
namespace A\B\C;
class Exception extends \Exception {}
$a = new Exception('hola'); // $a es un objeto de la clase A\B\C\Exception
$b = new \Exception('hola'); // $b es un objeto de la clase Exception
$c = new ArrayObject; // error fatal, no se encontró la clase A\B\C\ArrayObject
?>
Para funciones y constantes, PHP recurrirá a funciones y constantes globales si no existe una función o constante en el espacio de nombres.
Ejemplo #2 Recurrir a funciones/constantes globales dentro de un espacio de nombres
<?php
namespace A\B\C;
const E_ERROR = 45;
function strlen($str)
{
return \strlen($str) - 1;
}
echo E_ERROR, "\n"; // imprime "45"
echo INI_ALL, "\n"; // imprime "7" - recurre a INI_ALL global
echo strlen('hola'), "\n"; // imprime "3"
if (is_array('hola')) { // imprime "no es un array"
echo "es una array\n";
} else {
echo "no es un array\n";
}
?>