Lunes, 14 Julio 2014 20:13

Espacios de nombres en PHP

Escrito por 
Valora este artículo
(0 votos)

A partir de PHP version 5.3, admite que se pueda especificar el nombre de espacio al igual que  los namespaces de .NET, o los Packages en Java. Con esta nueva funcionalidad php se evita tener conflictos con archivos php con el mismo nombre, por ejemplo si en nuestro proyecto tenemos una clase Empleado, y luego debemos unir a nuestro proyecto unas librerías  en la cual también hay una clase Empleado, se producirían conflictos, o bien deberíamos referenciar a cada clase por el paquete al que pertenecen, con esta nueva característica php, podemos referenciar a clases con el mismo nombre, pero en diferentes nombres de espacios, también es útil cuando se trabaja un mismo proyecto pero con diferentes grupos de programadores, para evitar posibles conflictos cada grupo de programadores trabajara con diferentes nombres de espacios.

Los nombres de espacios en PHP


Los namespaces se deben declarar en el primer nivel del código php, es decir

  1. <?php
  2. namespace nombreEspacio;
  3. class Empleado{
  4. }
  5. ?>
  6.  


Se pueden definir subniveles entre los namespaces, con el separador “\”

  1. <?php
  2. namespace nivel1\nivle2\nivel3;
  3. class Empleado{
  4. }
  5. ?>
  6.  

A continuación veremos un simple ejemplo en Netbeans de los namespaces
Creamos un proyecto PHP


Le damos el nombre, en este caso AplicacionNS


Ahora creamos 2 directorios en el proyecto


A los dos directorios recinetemente creado, le agregamos una clase Empleado

Incluimos el siguiente código, para la clase Empleado del directorio “Libreria1”

  1. <?php
  2. namespace clases1;
  3. class Empleado {
  4.   public function hola(){
  5.     return "soy el Empleado 1";
  6.   }
  7. }
  8. ?>


Observamos como lo muestra en la imagen que nos pinta de rojo la línea “namespace”


Para solucionar esto en el Netbeans (que configura el proyecto por defecto en una versión anterior) modificamos la versión de PHP, para esto hacemos clik derecho sobre el proyecto y elegimos propiedades


En la ventana cambiamos la versión de PHP y con esto solucionado
Ahora Incluimos el código para la clase Empleado del directorio Libreria2

  1. <?php
  2. namespace clases2;
  3. class Empleado {
  4.     public function hola(){
  5.     return "soy el Empleado 2";
  6.   }
  7. }
  8. ?>


El árbol de proyecto nos queda de la siguiente manera



Ahora en nuestro index.php copiamos las siguientes líneas

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3.     <head>
  4.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5.         <title></title>
  6.     </head>
  7.     <body>
  8.         <?php
  9.         //incluimos las librerias
  10.         include 'Libreria1/Empleado.php';
  11.         include 'Libreria2/Empleado.php';
  12.         //instanciamos las clases, pero de
  13.         //los diferentes nombres de espacios clases1 y clases2
  14.         $empleado1= new clases1\Empleado();
  15.         $empleado2= new clases2\Empleado();
  16.         //llamamos a los metodos de cada instancia
  17.         echo $empleado1::hola()."<br>";
  18.         echo $empleado2::hola();
  19.         ?>
  20.     </body>
  21. </html>
  22.  

En imagenes el index nos queda asi


Bien observamos que instanciamos dos clases del mismo nombre “Empleado” pero de diferentes nombres de espacios, sin provocar conflictos, ni referenciar cada clase desde un directorio.
Ejecutamos el index.php y el resultado es el siguiente


Con esto acabamos de ver lo útil que nos puede resultar utilizar nombres de espacios, para tener un código mejor organizado, y evitar posibles conflictos a la hora de una modificación, o bien al programar en equipo. Hasta pronto….enlightened
 

Visto 508 veces Modificado por última vez en Lunes, 14 Julio 2014 20:16

Deja un comentario

Asegúrate de llenar la información requerida marcada con (*). No está permitido el código HTML. Tu dirección de correo NO será publicada.