PHP namespaces v0.0.1
Los namesoaces o nombres de espacio están disponibles a partir de PHP 5.3 . Como los define php.net de manera muy burda "son la manera de encapsular items", está definición puede sonar demaciado abstracta pero así lo es.
Tenemos un archivo llamado hola.php dentro del folder /home/lib/hola.php pero también tenemos otro archivo llamado hola.php en otro directorio que estamos usando de una librería de terceros, es aquí donde entran los namespaces y nos ayuda a avitar conflictos entre clases y funciones con el mismo nombre y actuan diferente.
run php sample1.php
output
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Código
<?php
namespace hola\mundo;
class HolaMundo {
public function hi(){
echo "Hola Mundo \r\n";
}
}
function holaMundo(){
echo "Hola Mundo \r\n";
}
const HOLA_MUNDO = "Hola Mundo \r\n";
# llamamos a la clase directamente
$hola = new HolaMundo;
$hola->hi();
# llamamos a la funcion directamente
holaMundo();
# llamamos a la contante directamente
echo HOLA_MUNDO;
# llamamos a la clase usando namespaces
$hola = new \hola\mundo\HolaMundo;
$hola->hi();
# llamamos a la funcion usando namespaces
\hola\mundo\holaMundo();
# llamamos a la contante usando namespaces
echo \hola\mundo\HOLA_MUNDO;
Los namespaces solo sirven en funciones, clases y constantes. No aplica para variables
La palabra reservada para definir a los namespaces es namespace
ejemplo:
<?php
namespace MyProject;
Los name spaces deben ser declarados al princio del script, aqui tenemos un ejemplo de un namespace mal declarado
<?php
$a = 0;
namespace MyProject;
git clone git@github.com:phpmx/namespaces.git